The current vis server JSON output format is breaking the json_decode() function for PHP.
This patch mainly: - Removes all spaces - Removes all the \t TABS - Double quotes the string-variables Reported-by: "Alberto Escudero-Pascual" <a...@it46.se> Signed-off-by: "elektra" <onelek...@gmx.net> --- vis.c 2011-03-09 17:19:59.000000000 +0100 +++ new/vis.c 2011-03-09 17:15:26.000000000 +0100 @@ -88,19 +88,21 @@ if ( fork() ) exit(EXIT_SUCCESS); - chdir( "/" ); + if (chdir( "/" )==0) { - if ( ( fd = open(_PATH_DEVNULL, O_RDWR, 0) ) != -1 ) { + if ( ( fd = open(_PATH_DEVNULL, O_RDWR, 0) ) != -1 ) { - dup2(fd, STDIN_FILENO); - dup2(fd, STDOUT_FILENO); - dup2(fd, STDERR_FILENO); + dup2(fd, STDIN_FILENO); + dup2(fd, STDOUT_FILENO); + dup2(fd, STDERR_FILENO); - if ( fd > 2 ) - close(fd); + if ( fd > 2 ) + close(fd); + } + } else { + exit_error( "Error - can't chdir\n"); } - return 0; } @@ -395,7 +397,7 @@ fillme->dot_buffer = (char *)debugRealloc( fillme->dot_buffer, strlen( tmp ) + strlen( fillme->dot_buffer ) + 1, 408 ); strncat( fillme->dot_buffer, tmp, strlen( tmp ) ); - snprintf( tmp, sizeof( tmp ), "%s\t{ router : \"%s\", neighbour : \"%s\", label : %.2f }", + snprintf( tmp, sizeof( tmp ), "%s{\"router\":\"%s\",\"neighbour\":\"%s\",\"label\":%.2f}", (first_line ? "" : ",\n"), from_str, to_str, (float)( orig_node->tq_max / (float)neigh->tq_avg ) ); first_line = 0; fillme->json_buffer = (char *)debugRealloc( fillme->json_buffer, strlen( tmp ) + strlen( fillme->json_buffer ) + 1, 408 ); @@ -416,7 +418,7 @@ fillme->dot_buffer = (char *)debugRealloc( fillme->dot_buffer, strlen( tmp ) + strlen( fillme->dot_buffer ) + 1, 409 ); strncat( fillme->dot_buffer, tmp, strlen( tmp ) ); - snprintf( tmp, sizeof( tmp ), "%s\t{ router : \"%s\", gateway : \"%s/%s\", label : \"HNA\" }", + snprintf( tmp, sizeof( tmp ), "%s{\"router\":\"%s\",\"gateway\":\"%s/%s\",\"label\":\"HNA\"}", (first_line ? "" : ",\n"), from_str, to_str, hna_str ); first_line = 0; fillme->json_buffer = (char *)debugRealloc( fillme->json_buffer, strlen( tmp ) + strlen( fillme->json_buffer ) + 1, 409 ); @@ -432,7 +434,7 @@ strncat( fillme->dot_buffer, tmp, strlen( tmp ) ); snprintf( tmp, sizeof( tmp ), - "%s\t{ router : \"%s\", gateway : \"%s\", label : \"%s\" }", + "%s{\"router\":\"%s\",\"gateway\":\"%s\",\"label\":\"%s\"}", (first_line ? "" : ",\n"), from_str, "0.0.0.0/0.0.0.0", "HNA" ); first_line = 0; fillme->json_buffer = (char *)debugRealloc( fillme->json_buffer, strlen( tmp ) + strlen( fillme->json_buffer ) + 1, 410 );