Hatena::Groupsubtech

sexさんのブログ RSSフィード

2007-11-15

Cでmkdirを再帰的にしたいとき 19:47  Cでmkdirを再帰的にしたいとき - sexさんのブログ を含むブックマーク はてなブックマーク -  Cでmkdirを再帰的にしたいとき - sexさんのブログ  Cでmkdirを再帰的にしたいとき - sexさんのブログ のブックマークコメント

static void recursive_mkdir(char *d)
{
    char *tok, *path;
    int len;
    struct stat sb;

    len = strlen(d) + 1;
    path = malloc(len + 1);

    tok = strtok(d, "/");
    snprintf(path, len, "/%s", tok);
    while(1) {
        if(stat(path, &sb) < 0) {
            // The path element didn't exist
            mkdir(path, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH);
        }

        if(!S_ISDIR(sb.st_mode)) {
            printf("Path element not a directory\n");
            exit(3);
        }

        tok = strtok(NULL, "/");
        if(!tok)
            exit(0);
        strncat(path, "/", len);
        strncat(path, tok, len);
    }
    return;
}
トラックバック - http://subtech.g.hatena.ne.jp/clouder/20071115