/* return parsed args number */ int utils_parse_upnp_task(char *buf, size_t size, char **argv) { char *p; //int i; int argc; argc = 0; //i = 0; p = buf; while((argc < RC_MAX_ARGS - 1) && (*p != '\0')) { /* skip blank char */ while(IS_BLANK(*p)) { *p = '\0'; p++; } if (*p == '\0') break; /* find argv[] start */ argv[argc] = p; argc++; p++; while(!IS_COLON(*p) && (*p != '\0')) p++; /* 0-terminated argv */ if (IS_COLON(*p)) { *p = '\0'; p++; } } /* check if all string has been parsed */ if (*p != '\0') { return -1; } /* final argv[] must be NULL */ argv[argc] = NULL; return (argc); }
/* ======================================================== pagc_tools.c (establish_directory) Determine the current working directory and path_separator ========================================================= */ int establish_directory( char * c_w_d , char * p_s ) { char *c_w_d_ptr ; c_w_d_ptr = getcwd( c_w_d , ( PATHNAME_LEN - 1 ) ) ; if ( c_w_d_ptr == NULL ) { return FALSE ; } *p_s = FORE_SLASH ; #ifdef MSYS_POSIX /* ..... transform cwd's non-POSIX directory separators to conform ..... */ conform_directory_separator( c_w_d ) ; #endif if ( isalpha( c_w_d[ 0 ] ) ) { /* ..... drive letter, colon, dir_sep ..... */ if ( IS_COLON( c_w_d[ 1 ] ) ) { *p_s = c_w_d[ 2 ] ; if ( ( *p_s != FORE_SLASH ) && ( *p_s != BACK_SLASH ) ) { return FALSE ; } } else { return FALSE ; } } return TRUE ; }