Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1255877
  • 博文数量: 168
  • 博客积分: 3483
  • 博客等级: 中校
  • 技术积分: 1696
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-06 13:17
文章分类

全部博文(168)

文章存档

2015年(6)

2014年(9)

2013年(47)

2012年(11)

2011年(13)

2010年(18)

2009年(11)

2008年(42)

2007年(11)

分类:

2008-04-19 12:56:49

int mkdir_p(char * path);    /* create dir recursively like mkdir(1) -p */
                             /* return : 0 successful, -1 failed */
---------------------------------------------------------------------------
#include

#include
#include
#include
#include

/*
 * do the action like "mkdir(1) -p"
 */
int
mkdir_p(char * path)

{
    char * ptr = NULL;
    int i, len, ret;

    len = strlen(path);
    if (NULL == (ptr = malloc(len + 2))) {
        return (-1);
    }
    strcpy(ptr, path);

    /*
     * convert "a/b/c/d" to "a/b/c/d/"
     */
    if (ptr[len - 1] != '/') {
        ptr[len] = '/'; ptr[len + 1] = '\0';
    }

    /*
     * create dir recursively
     */
    for (i = 1; i < len + 1; i++) {
        if (ptr[i] == '/') {
            ptr[i] = '\0';
            ret = mkdir(ptr, 0755);
            if (ret < 0 && errno != EEXIST) {
                free(ptr);
                return (-1);
            }
            ptr[i] = '/';
        }
    }

    free(ptr);
    return (0);
}

阅读(2262) | 评论(0) | 转发(0) |
0

上一篇:QNX的体系结构白皮书

下一篇::)

给主人留下些什么吧!~~