You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
59 lines
1.4 KiB
59 lines
1.4 KiB
void |
|
openUrlOnClick(int col, int row, char* url_opener) |
|
{ |
|
int row_start = row; |
|
int col_start = col; |
|
int row_end = row; |
|
int col_end = col; |
|
|
|
if (term.line[row][col].u == ' ') |
|
return; |
|
|
|
/* while previous character is not space */ |
|
while (term.line[row_start][col_start-1].u != ' ') { |
|
if (col_start == 0) |
|
{ |
|
// Before moving start pointer to the previous line we check if it ends with space |
|
if (term.line[row_start - 1][term.col - 1].u == ' ') |
|
break; |
|
col_start=term.col - 1; |
|
row_start--; |
|
} else { |
|
col_start--; |
|
} |
|
} |
|
|
|
/* while next character is not space nor end of line */ |
|
while (term.line[row_end][col_end].u != ' ') { |
|
col_end++; |
|
if (col_end == term.col - 1) |
|
{ |
|
if (term.line[row_end + 1][0].u == ' ') |
|
break; |
|
col_end=0; |
|
row_end++; |
|
} |
|
} |
|
|
|
char url[200] = ""; |
|
int url_index=0; |
|
do { |
|
url[url_index] = term.line[row_start][col_start].u; |
|
url_index++; |
|
col_start++; |
|
if (col_start == term.col) |
|
{ |
|
col_start = 0; |
|
row_start++; |
|
} |
|
} while (url_index < (sizeof(url)-1) && |
|
(row_start != row_end || col_start != col_end)); |
|
|
|
if (strncmp("http", url, 4) != 0) { |
|
return; |
|
} |
|
|
|
char command[strlen(url_opener)+strlen(url)+2]; |
|
sprintf(command, "%s %s", url_opener, url); |
|
system(command); |
|
}
|
|
|