HIDDEN int extract_path(struct bu_vls *path, const char *input) { int ret = 0; struct bu_vls wpath = BU_VLS_INIT_ZERO; char *colon_pos = NULL; char *inputcpy = NULL; if (UNLIKELY(!input)) return 0; inputcpy = bu_strdup(input); colon_pos = strchr(inputcpy, ':'); if (colon_pos) { bu_vls_sprintf(&wpath, "%s", input); bu_vls_nibble(&wpath, strlen(input) - strlen(colon_pos) + 1); if (path && bu_vls_strlen(&wpath) > 0) { ret = 1; bu_vls_sprintf(path, "%s", bu_vls_addr(&wpath)); } bu_vls_free(&wpath); } else { if (path) bu_vls_sprintf(path, "%s", input); ret = 1; } if (inputcpy) bu_free(inputcpy, "input copy"); if (path && !(bu_vls_strlen(path) > 0)) return 0; return ret; }
/** * b u _ v l s _ t r i m s p a c e * * Remove leading and trailing white space from a vls string. */ void bu_vls_trimspace( struct bu_vls *vp ) { BU_CK_VLS(vp); /* Remove trailing white space */ while ( isspace( bu_vls_addr(vp)[bu_vls_strlen(vp)-1] ) ) bu_vls_trunc( vp, -1 ); /* Remove leading white space */ while ( isspace( *bu_vls_addr(vp) ) ) bu_vls_nibble( vp, 1 ); }
HIDDEN void reassemble_argstr(struct bu_vls *instr, struct bu_vls *outstr, option::Option *unknowns) { for (option::Option* opt = unknowns; opt; opt = opt->next()) { int input_only = 0; int output_only = 0; char *inputcpy = NULL; if (!instr || !outstr) return; inputcpy = bu_strdup(opt->name); if (!bu_strncmp(inputcpy, "--in-", 5)) input_only = 1; if (!bu_strncmp(inputcpy, "--out-", 5)) output_only = 1; char *equal_pos = strchr(inputcpy, '='); if (equal_pos) { struct bu_vls vopt = BU_VLS_INIT_ZERO; struct bu_vls varg = BU_VLS_INIT_ZERO; bu_vls_sprintf(&vopt, "%s", inputcpy); bu_vls_trunc(&vopt, -1 * strlen(equal_pos)); bu_vls_sprintf(&varg, "%s", inputcpy); bu_vls_nibble(&varg, strlen(inputcpy) - strlen(equal_pos) + 1); if (!output_only) { (bu_vls_strlen(&vopt) == 1) ? bu_vls_printf(instr, "-%s ", bu_vls_addr(&vopt)) : bu_vls_printf(instr, "%s ", bu_vls_addr(&vopt)); if (bu_vls_strlen(&varg)) bu_vls_printf(instr, "%s ", bu_vls_addr(&varg)); } if (!input_only) { (bu_vls_strlen(&vopt) == 1) ? bu_vls_printf(outstr, "-%s ", bu_vls_addr(&vopt)) : bu_vls_printf(outstr, "%s ", bu_vls_addr(&vopt)); if (bu_vls_strlen(&varg)) bu_vls_printf(outstr, "%s ", bu_vls_addr(&varg)); } bu_vls_free(&vopt); bu_vls_free(&varg); } else { if (!output_only) { (strlen(opt->name) == 1) ? bu_vls_printf(instr, "-%s ", opt->name) : bu_vls_printf(instr, "%s ", opt->name); if (opt->arg) bu_vls_printf(instr, "%s ", opt->arg); } if (!input_only) { (strlen(opt->name) == 1) ? bu_vls_printf(outstr, "-%s ", opt->name) : bu_vls_printf(outstr, "%s ", opt->name); if (opt->arg) bu_vls_printf(outstr, "%s ", opt->arg); } } bu_free(inputcpy, "input cpy"); } }