int win32_rename_dir (const char *oldname, const char *newname) { char *oldtmp = NULL, *newtmp = NULL; int len, err; /* trim trailing slash for non-root dirs */ len = strlen(oldname); if (len > 1 && oldname[len - 1] == '\\' && oldname[len - 2] != ':') { oldtmp = gretl_strndup(oldname, len - 1); oldname = oldtmp; } len = strlen(newname); if (len > 1 && newname[len - 1] == '\\' && newname[len - 2] != ':') { newtmp = gretl_strndup(newname, len - 1); newname = newtmp; } err = gretl_rename(oldname, newname); if (oldtmp!= NULL || newtmp != NULL) { free(oldtmp); free(newtmp); } return err; }
static char *get_quoted_string (parser *p) { char *s = NULL; int n; /* look for a matching (non-escaped) double-quote */ n = double_quote_position(p->point); if (n < 0) { /* backward compatibility */ n = gretl_charpos('"', p->point); } if (n >= 0) { s = gretl_strndup(p->point, n); parser_advance(p, n + 1); } else { parser_print_input(p); pprintf(p->prn, _("Unmatched '%c'\n"), '"'); p->err = E_PARSE; } if (!p->err) { if (p->ch == '.' && *p->point == '$') { /* maybe quoted name of saved object followed by dollar variable? */ p->sym = OVAR; } else { p->sym = STR; } } return s; }
void gretl_insert_builtin_string (const char *name, const char *s) { int i, n = sizeof built_ins / sizeof built_ins[0]; for (i=0; i<n; i++) { if (!strcmp(name, built_ins[i].name)) { free(built_ins[i].s); if (s == NULL) { built_ins[i].s = NULL; } else { int m = strlen(s); if (s[m-1] == SLASH) { /* drop trailing dir separator for paths */ built_ins[i].s = gretl_strndup(s, m - 1); } else { built_ins[i].s = gretl_strdup(s); } } return; } } }