From f3fd2bc175ff3bee8680106782ab01e8b69c7724 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Mon, 24 Jan 2011 13:40:47 +0000 Subject: [PATCH] append / to directory names (and remove later...) --- src/fs/fs_download.c | 62 ++++----------------------------- src/fs/fs_file_information.c | 10 ++++-- src/fs/test_gnunet_fs_rec.py.in | 16 ++++----- 3 files changed, 22 insertions(+), 66 deletions(-) diff --git a/src/fs/fs_download.c b/src/fs/fs_download.c index d001144f6..96ad797bf 100644 --- a/src/fs/fs_download.c +++ b/src/fs/fs_download.c @@ -902,6 +902,7 @@ trigger_recursive_download (void *cls, char *dn; char *pos; char *full_name; + char *sfn; if (NULL == uri) return; /* entry for the directory itself */ @@ -965,6 +966,10 @@ trigger_recursive_download (void *cls, (NULL != strstr (dn + strlen(dn) - strlen(GNUNET_FS_DIRECTORY_EXT), GNUNET_FS_DIRECTORY_EXT)) ); + sfn = GNUNET_strdup (filename); + while ( (strlen (sfn) > 0) && + (filename[strlen(sfn)-1] == '/') ) + sfn[strlen(sfn)-1] = '\0'; if ( (strlen (dn) >= strlen (GNUNET_FS_DIRECTORY_EXT)) && (NULL != strstr (dn + strlen(dn) - strlen(GNUNET_FS_DIRECTORY_EXT), @@ -980,7 +985,7 @@ trigger_recursive_download (void *cls, "%s%s%s%s", dn, DIR_SEPARATOR_STR, - filename, + sfn, GNUNET_FS_DIRECTORY_EXT); } else @@ -989,7 +994,7 @@ trigger_recursive_download (void *cls, "%s%s%s", dn, DIR_SEPARATOR_STR, - filename); + sfn); } GNUNET_free (dn); } @@ -1006,59 +1011,6 @@ trigger_recursive_download (void *cls, } temp_name = NULL; -#if 0 - if (data != NULL) - { - if (GNUNET_FS_uri_chk_get_file_size (uri) == length) - { - if (full_name == NULL) - { - temp_name = GNUNET_DISK_mktemp ("gnunet-download-trd"); - real_name = temp_name; - } - else - { - real_name = full_name; - } - /* write to disk, then trigger normal download which will instantly progress to completion */ - fh = GNUNET_DISK_file_open (real_name, - GNUNET_DISK_OPEN_WRITE | GNUNET_DISK_OPEN_TRUNCATE | GNUNET_DISK_OPEN_CREATE, - GNUNET_DISK_PERM_USER_READ | GNUNET_DISK_PERM_USER_WRITE); - if (fh == NULL) - { - GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, - "open", - real_name); - GNUNET_free (full_name); - GNUNET_free_non_null (fn); - return; - } - if (length != - GNUNET_DISK_file_write (fh, - data, - length)) - { - GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, - "write", - full_name); - } -#if DEBUG_DOWNLOAD - GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, - "Wrote %llu bytes of plaintext from meta data to `%s' for validation\n", - (unsigned long long) length, - real_name); -#endif - GNUNET_DISK_file_close (fh); - } - else - { - GNUNET_log (GNUNET_ERROR_TYPE_WARNING, - _("Length mismatch between supplied plaintext and expected file size (%llu != %llu)\n"), - (unsigned long long) GNUNET_FS_uri_chk_get_file_size (uri), - (unsigned long long) length); - } - } -#endif #if DEBUG_DOWNLOAD GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Triggering recursive download of size %llu with %u bytes MD\n", diff --git a/src/fs/fs_file_information.c b/src/fs/fs_file_information.c index e0b048843..2ae708e59 100644 --- a/src/fs/fs_file_information.c +++ b/src/fs/fs_file_information.c @@ -422,7 +422,6 @@ dir_scan_cb (void *cls, GNUNET_FS_meta_data_extract_from_file (meta, filename, dsc->extractors); - // FIXME: remove path from filename in metadata! keywords = GNUNET_FS_uri_ksk_create_from_meta_data (meta); ksk_uri = GNUNET_FS_uri_ksk_canonicalize (keywords); fi = GNUNET_FS_file_information_create_from_file (dsc->h, @@ -582,6 +581,7 @@ GNUNET_FS_file_information_create_from_directory (struct GNUNET_FS_Handle *h, struct GNUNET_CONTAINER_MetaData *meta; const char *fn; const char *ss; + char *dn; dc.entries = NULL; meta = GNUNET_CONTAINER_meta_data_create (); @@ -617,13 +617,17 @@ GNUNET_FS_file_information_create_from_directory (struct GNUNET_FS_Handle *h, DIR_SEPARATOR_STR))) && (strlen (ss) > 1) ) fn = ss + 1; + GNUNET_asprintf (&dn, + "%s/", + fn); GNUNET_CONTAINER_meta_data_insert (ret->meta, "", EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME, EXTRACTOR_METAFORMAT_C_STRING, "text/plain", - fn, - strlen (fn) + 1); + dn, + strlen (dn) + 1); + GNUNET_free (dn); ret->filename = GNUNET_strdup (filename); return ret; } diff --git a/src/fs/test_gnunet_fs_rec.py.in b/src/fs/test_gnunet_fs_rec.py.in index a9c2b9c0e..3c990b35b 100755 --- a/src/fs/test_gnunet_fs_rec.py.in +++ b/src/fs/test_gnunet_fs_rec.py.in @@ -29,19 +29,19 @@ os.system ('tar xfz test_gnunet_fs_rec_data.tgz') try: pub = pexpect.spawn ('gnunet-publish -c test_gnunet_fs_rec_data.conf -d -k testdir dir/') pub.expect ('Publishing `dir/\' done.\r') - pub.expect ("URI is `gnunet://fs/chk/CQI091BQ15LLC2NO5RQM2LP95D8I0ONKDFT912V8CMH3BIPDUSDKG3JL07V9E89JPJ0CG5JE9EAQLC1Q6I0VF9L8M86MO0K3DG7HA2O.NVIUL6B7AT6TIUVOV0JLIQ3LLSS3TRLCVAISDS47V0KVHN22TJ9H9247HQNA8T3KK1J32QJ65312DUQPA2EBQPNII279BU0MKJEB94G.20181'.") + pub.expect ("URI is `gnunet://fs/chk/M2I80IUI2DM4L6G93KL15AHAO7MIMS5JKP1L3LQFVN50CT7AKRQDSF594BC9TD97JJIT3COF6B5O524CMIOG9EJO8UK1560M54JRI70.GBRE5M4QJ7NA0QIN88FMSC78NNOQMVT5DH8FP37OIR5SGGHFEB9ESDNBRKT9PFE9N2GOI81UN8GGBR6KH9GRTV1T04JFSJURF2U0VE8.20182'.") pub.expect (pexpect.EOF) - down = pexpect.spawn ('gnunet-download -c test_gnunet_fs_rec_data.conf -R -o rdir.gnd gnunet://fs/chk/CQI091BQ15LLC2NO5RQM2LP95D8I0ONKDFT912V8CMH3BIPDUSDKG3JL07V9E89JPJ0CG5JE9EAQLC1Q6I0VF9L8M86MO0K3DG7HA2O.NVIUL6B7AT6TIUVOV0JLIQ3LLSS3TRLCVAISDS47V0KVHN22TJ9H9247HQNA8T3KK1J32QJ65312DUQPA2EBQPNII279BU0MKJEB94G.20181') + down = pexpect.spawn ('gnunet-download -c test_gnunet_fs_rec_data.conf -R -o rdir.gnd gnunet://fs/chk/M2I80IUI2DM4L6G93KL15AHAO7MIMS5JKP1L3LQFVN50CT7AKRQDSF594BC9TD97JJIT3COF6B5O524CMIOG9EJO8UK1560M54JRI70.GBRE5M4QJ7NA0QIN88FMSC78NNOQMVT5DH8FP37OIR5SGGHFEB9ESDNBRKT9PFE9N2GOI81UN8GGBR6KH9GRTV1T04JFSJURF2U0VE8.20182') down.expect (re.compile ("Downloading `rdir.gnd\' done \(.*\).\r")); down.expect (pexpect.EOF); -# dir = pexpect.spawn ('gnunet-directory -c test_gnunet_fs_rec_data.conf rdir/a.gnd') -# dir.expect (re.compile ("Directory `a' summary:")); -# dir.expect (re.compile (" *mimetype: application/gnunet-directory")); -# dir.expect (re.compile ("COPYING (.*)")); -# dir.expect (re.compile ("INSTALL (.*)")); -# dir.expect (pexpect.EOF) + dir = pexpect.spawn ('gnunet-directory -c test_gnunet_fs_rec_data.conf rdir/a.gnd') + dir.expect (re.compile ("Directory `a/' meta data:")); + dir.expect (re.compile ("Directory `a/' contents:")); + dir.expect (re.compile ("COPYING (.*)")); + dir.expect (re.compile ("INSTALL (.*)")); + dir.expect (pexpect.EOF) os.system ('rm -r rdir/b.gnd rdir/a.gnd') if (0 != os.system ("diff -r dir rdir")): -- 2.25.1