12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /*
- * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- * This component and the accompanying materials are made available
- * under the terms of the License "Eclipse Public License v1.0"
- * which accompanies this distribution, and is available
- * at the URL "http://www.eclipse.org/legal/epl-v10.html".
- *
- * Initial Contributors:
- * Nokia Corporation - initial contribution.
- *
- * Contributors:
- *
- * Description:
- *
- * Program for making directory hierarchies
- *
- */
- #include <stdio.h>
- #include <sys/stat.h>
- #include <sys/types.h>
- #include <string.h>
- #include <errno.h>
- #include "log.h"
- #include "../config.h"
- int mkpath(char *path)
- {
- int pathlen;
- char *pathend;
- char *p;
- int ret = 255;
-
- pathlen=strlen(path);
- pathend = path + pathlen;
- p = path;
- // Find the first level at which we *can* make a directory
- // go down one level at a time until we make something that works
- DEBUG(("down: %s\n", path));
- while ( 0 != mkdir(path, 0777))
- {
- // ENOENT means that the parent directory doesn't exist so it's ok
- // any other error is not ok and means that we must give up
- if (errno != ENOENT)
- return 1;
- p = strrchr(path,'/');
- if (!p)
- break;
- *p = '\0';
- }
- // So we found the point at which a pre-existing tree starts
- do
- {
- p = index(path, '\0');
- if (p >= pathend)
- {
- ret = 0;
- break;
- }
- *p = '/';
- DEBUG(("up: %s\n", path));
- }
- while (0 == mkdir(path, 0777));
-
- return ret;
- }
- int main(int argc, char *argv[])
- {
- int i;
- //loglevel=LOGDEBUG;
- for (i=1; i < argc; i++)
- {
- if ( 0 != mkpath(argv[i]))
- return 255;
- }
- return 0;
- }
|