pike.git / src / builtin_functions.c

version» Context lines:

pike.git/src/builtin_functions.c:1676:    }    }    break;    default:    Pike_fatal("Unsupported string width.\n");    break;    }    return -1;   }    + /*! @decl string dirname(string path) +  *! +  *! Returns all but the last segment of a path. Some example inputs and +  *! outputs: +  *! +  *! @xml{<matrix> +  *! <r><c><b>Expression</b></c><c><b>Value</b></c></r> +  *! <r><c>dirname("/a/b")</c><c>"/a"</c></r> +  *! <r><c>dirname("/a/")</c><c>"/a"</c></r> +  *! <r><c>dirname("/a")</c><c>"/"</c></r> +  *! <r><c>dirname("/")</c><c>"/"</c></r> +  *! <r><c>dirname("")</c><c>""</c></r> +  *! </matrix>@} +  *! +  *! @seealso +  *! @[basename()], @[explode_path()] +  */   PMOD_EXPORT void f_dirname(INT32 args)   {    struct pike_string *s = NULL;    ptrdiff_t pos, pos2 = -1;      #ifdef __NT__    check_all_args("dirname", args, BIT_STRING, 0);    push_text("\\");    push_text("/");    f_replace(3);
pike.git/src/builtin_functions.c:1701:    if (pos < 0) {    ref_push_string(empty_pike_string);    } else if (pos) {    push_string(string_slice(s, 0, pos));    } else {    push_text("/");    }    stack_pop_n_elems_keep_top(args);   }    + /*! @decl string basename(string path) +  *! +  *! Returns the last segment of a path. +  *! +  *! @seealso +  *! @[dirname()], @[explode_path()] +  */   PMOD_EXPORT void f_basename(INT32 args)   {    struct pike_string *s = NULL;    ptrdiff_t pos, pos2 = -1;       get_all_args("basename", args, "%t", &s);       pos = find_last_path_separator(s, '/', s->len);   #ifdef __NT__    pos2 = find_last_path_separator(s, '\\', s->len);