From 6003b6e317a1c41a9955a9c54f2fbd4fa2a854e8 Mon Sep 17 00:00:00 2001 From: Christian Grothoff Date: Fri, 3 Feb 2012 21:55:39 +0000 Subject: [PATCH] -also user gnunet-original filename here more consistently --- src/fs/fs_dirmetascan.c | 10 +++++++++- src/fs/fs_uri.c | 2 +- src/util/container_meta_data.c | 3 ++- src/util/pseudonym.c | 1 + src/util/strings.c | 1 + 5 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/fs/fs_dirmetascan.c b/src/fs/fs_dirmetascan.c index 543701ca2..34170a8d4 100644 --- a/src/fs/fs_dirmetascan.c +++ b/src/fs/fs_dirmetascan.c @@ -194,6 +194,7 @@ expand_tree (struct GNUNET_FS_ShareTreeItem *parent, int is_directory) { struct GNUNET_FS_ShareTreeItem *chld; + size_t slen; chld = GNUNET_malloc (sizeof (struct GNUNET_FS_ShareTreeItem)); chld->parent = parent; @@ -202,6 +203,12 @@ expand_tree (struct GNUNET_FS_ShareTreeItem *parent, "%s%s", GNUNET_STRINGS_get_short_name (filename), is_directory ? "/" : ""); + /* make sure we do not end with '//' */ + slen = strlen (chld->short_filename); + if ( (slen >= 2) && + (chld->short_filename[slen-1] == '/') && + (chld->short_filename[slen-2] == '/') ) + chld->short_filename[slen-1] = '\0'; chld->is_directory = is_directory; if (NULL != parent) GNUNET_CONTAINER_DLL_insert (parent->children_head, @@ -360,8 +367,9 @@ process_helper_msgs (void *cls, GNUNET_CONTAINER_meta_data_delete (ds->pos->meta, EXTRACTOR_METATYPE_FILENAME, NULL, 0); + /* instead, put in our 'safer' original filename */ GNUNET_CONTAINER_meta_data_insert (ds->pos->meta, "", - EXTRACTOR_METATYPE_FILENAME, + EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME, EXTRACTOR_METAFORMAT_UTF8, "text/plain", ds->pos->short_filename, strlen (ds->pos->short_filename) + 1); diff --git a/src/fs/fs_uri.c b/src/fs/fs_uri.c index fac478d38..50c8785b6 100644 --- a/src/fs/fs_uri.c +++ b/src/fs/fs_uri.c @@ -1805,7 +1805,7 @@ GNUNET_FS_uri_ksk_create_from_meta_data (const struct GNUNET_CONTAINER_MetaData if (ent > 0) { full_name = GNUNET_CONTAINER_meta_data_get_first_by_types (md, - EXTRACTOR_METATYPE_FILENAME, -1); + EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME, -1); if (NULL != full_name) { filename = full_name; diff --git a/src/util/container_meta_data.c b/src/util/container_meta_data.c index c2ec01c04..b1051c8b6 100644 --- a/src/util/container_meta_data.c +++ b/src/util/container_meta_data.c @@ -315,7 +315,8 @@ GNUNET_CONTAINER_meta_data_insert (struct GNUNET_CONTAINER_MetaData *md, i->data = GNUNET_malloc (data_len); memcpy (i->data, data, data_len); /* change OS native dir separators to unix '/' and others to '_' */ - if (type == EXTRACTOR_METATYPE_FILENAME) + if ( (type == EXTRACTOR_METATYPE_FILENAME) || + (type == EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME) ) { p = i->data; while ((*p != '\0') && (p < i->data + data_len)) diff --git a/src/util/pseudonym.c b/src/util/pseudonym.c index 356a83b6b..782a405fc 100644 --- a/src/util/pseudonym.c +++ b/src/util/pseudonym.c @@ -319,6 +319,7 @@ GNUNET_PSEUDONYM_id_to_name (const struct GNUNET_CONFIGURATION_Handle *cfg, name = GNUNET_CONTAINER_meta_data_get_first_by_types (meta, EXTRACTOR_METATYPE_TITLE, + EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME, EXTRACTOR_METATYPE_FILENAME, EXTRACTOR_METATYPE_DESCRIPTION, EXTRACTOR_METATYPE_SUBJECT, diff --git a/src/util/strings.c b/src/util/strings.c index 1a884bc75..8000a93fb 100644 --- a/src/util/strings.c +++ b/src/util/strings.c @@ -607,6 +607,7 @@ GNUNET_STRINGS_absolute_time_to_string (struct GNUNET_TIME_Absolute t) return ret; } + /** * "man basename" * Returns a pointer to a part of filename (allocates nothing)! -- 2.25.1