bl/utils.c
changeset 6 faab25d520dd
parent 5 f600b0d1fc5d
child 7 721e468c10f3
     1.1 --- a/bl/utils.c	Fri Jan 27 10:30:16 2012 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,46 +0,0 @@
     1.4 -#include <stdlib.h>
     1.5 -#include <string.h>
     1.6 -#include <unistd.h>
     1.7 -#include <bl/mem.h>
     1.8 -#include <bl/strfuncs.h>
     1.9 -#include <bl/utils.h>
    1.10 -
    1.11 -#define is_valid_drive(d)	((d)>='a' && (d)<='z' || (d)>='A' && (d)<='Z')
    1.12 -
    1.13 -/*
    1.14 - * Gets the last component of the filename. If filename ends with a directory
    1.15 - * separator it gets the component before the last slash. If filename consists
    1.16 - * only of directory separators (and on Windows, possibly a drive letter), a
    1.17 - * single separator is returned. If filename is empty, it gets ".".
    1.18 - */
    1.19 -char *path_get_basename(const char *filename)
    1.20 -{
    1.21 -    ssize_t base,last_nonslash;
    1.22 -    size_t len;
    1.23 -    char *retval;
    1.24 -    if (*filename=='\0')
    1.25 -        return str_dup(".");
    1.26 -    last_nonslash=strlen(filename)-1;
    1.27 -    while (last_nonslash>=0 && BL_IS_DIR_SEPARATOR(filename[last_nonslash]))
    1.28 -	last_nonslash--;
    1.29 -    if (last_nonslash<0)
    1.30 -	/* string only containing slashes */
    1.31 -    return str_dup(BL_DIR_SEPARATOR_S);
    1.32 -#ifdef WIN32
    1.33 -    if (last_nonslash==1 && is_valid_drive(filename[0]) && filename[1]==':')
    1.34 -	/* string only containing slashes and a drive */
    1.35 -	return str_dup(BL_DIR_SEPARATOR_S);
    1.36 -#endif
    1.37 -    base=last_nonslash;
    1.38 -    while (base>=0 && !BL_IS_DIR_SEPARATOR(filename[base]))
    1.39 -	base--;
    1.40 -#ifdef WIN32
    1.41 -    if (base==-1 && is_valid_drive(filename[0]) && filename[1] == ':')
    1.42 -	  base=1;
    1.43 -#endif
    1.44 -    len=last_nonslash-base;
    1.45 -    retval=mem_alloc(len+1,1);
    1.46 -    memcpy(retval,filename+base+1,len);
    1.47 -    retval[len]='\0';
    1.48 -    return retval;
    1.49 -}