[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r24813 - gnunet/src/util
From: |
gnunet |
Subject: |
[GNUnet-SVN] r24813 - gnunet/src/util |
Date: |
Tue, 6 Nov 2012 23:32:42 +0100 |
Author: harsha
Date: 2012-11-06 23:32:42 +0100 (Tue, 06 Nov 2012)
New Revision: 24813
Modified:
gnunet/src/util/disk.c
Log:
check for existing directories in reverse order
Modified: gnunet/src/util/disk.c
===================================================================
--- gnunet/src/util/disk.c 2012-11-06 22:20:57 UTC (rev 24812)
+++ gnunet/src/util/disk.c 2012-11-06 22:32:42 UTC (rev 24813)
@@ -676,8 +676,9 @@
GNUNET_DISK_directory_create (const char *dir)
{
char *rdir;
- int len;
- int pos;
+ unsigned int len;
+ unsigned int pos;
+ unsigned int pos2;
int ret = GNUNET_OK;
rdir = GNUNET_STRINGS_filename_expand (dir);
@@ -707,6 +708,33 @@
pos = 3; /* strlen("C:\\") */
}
#endif
+ /* Check which low level directories already exist */
+ pos2 = len;
+ rdir[len] = DIR_SEPARATOR;
+ while (pos <= pos2)
+ {
+ if (DIR_SEPARATOR == rdir[pos2])
+ {
+ rdir[pos2] = '\0';
+ ret = GNUNET_DISK_directory_test (rdir);
+ if (GNUNET_SYSERR == ret)
+ {
+ GNUNET_free (rdir);
+ return GNUNET_SYSERR;
+ }
+ rdir[pos2] = DIR_SEPARATOR;
+ if (GNUNET_YES == ret)
+ {
+ pos2++;
+ break;
+ }
+ }
+ pos2--;
+ }
+ rdir[len] = '\0';
+ if (pos < pos2)
+ pos = pos2;
+ /* Starting creating directories */
while (pos <= len)
{
if ((rdir[pos] == DIR_SEPARATOR) || (pos == len))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r24813 - gnunet/src/util,
gnunet <=