[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r20600 - in gnunet/src: fs hello include statistics testing
From: |
gnunet |
Subject: |
[GNUnet-SVN] r20600 - in gnunet/src: fs hello include statistics testing topology transport util |
Date: |
Mon, 19 Mar 2012 11:48:52 +0100 |
Author: grothoff
Date: 2012-03-19 11:48:51 +0100 (Mon, 19 Mar 2012)
New Revision: 20600
Modified:
gnunet/src/fs/fs_download.c
gnunet/src/fs/fs_file_information.c
gnunet/src/fs/fs_unindex.c
gnunet/src/fs/gnunet-directory.c
gnunet/src/fs/gnunet-helper-fs-publish.c
gnunet/src/fs/test_fs_download.c
gnunet/src/fs/test_fs_download_indexed.c
gnunet/src/fs/test_fs_download_persistence.c
gnunet/src/hello/gnunet-hello.c
gnunet/src/include/gnunet_disk_lib.h
gnunet/src/statistics/gnunet-service-statistics.c
gnunet/src/testing/gnunet-testing.c
gnunet/src/testing/testing_group.c
gnunet/src/topology/gnunet-daemon-topology.c
gnunet/src/transport/gnunet-service-transport_blacklist.c
gnunet/src/transport/plugin_transport_http_server.c
gnunet/src/transport/transport-testing.c
gnunet/src/util/crypto_hash.c
gnunet/src/util/crypto_rsa.c
gnunet/src/util/disk.c
gnunet/src/util/pseudonym.c
gnunet/src/util/test_disk.c
Log:
-LRN: calculate file size for single files when needed and use
GNUNET_DISK_file_size instead of STAT
Modified: gnunet/src/fs/fs_download.c
===================================================================
--- gnunet/src/fs/fs_download.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/fs/fs_download.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -2068,7 +2068,7 @@
{
dc->filename = GNUNET_strdup (filename);
if (GNUNET_YES == GNUNET_DISK_file_test (filename))
- GNUNET_break (GNUNET_OK == GNUNET_DISK_file_size (filename,
&dc->old_file_size, GNUNET_YES));
+ GNUNET_break (GNUNET_OK == GNUNET_DISK_file_size (filename,
&dc->old_file_size, GNUNET_YES, GNUNET_YES));
}
if (GNUNET_FS_uri_test_loc (dc->uri))
GNUNET_assert (GNUNET_OK ==
@@ -2178,7 +2178,7 @@
{
dc->filename = GNUNET_strdup (filename);
if (GNUNET_YES == GNUNET_DISK_file_test (filename))
- GNUNET_break (GNUNET_OK == GNUNET_DISK_file_size (filename,
&dc->old_file_size, GNUNET_YES));
+ GNUNET_break (GNUNET_OK == GNUNET_DISK_file_size (filename,
&dc->old_file_size, GNUNET_YES, GNUNET_YES));
}
if (GNUNET_FS_uri_test_loc (dc->uri))
GNUNET_assert (GNUNET_OK ==
Modified: gnunet/src/fs/fs_file_information.c
===================================================================
--- gnunet/src/fs/fs_file_information.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/fs/fs_file_information.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -107,7 +107,7 @@
*bo)
{
struct FileInfo *fi;
- struct stat sbuf;
+ uint64_t fsize;
struct GNUNET_FS_FileInformation *ret;
const char *fn;
const char *ss;
@@ -116,7 +116,8 @@
char fn_conv[MAX_PATH];
#endif
- if (0 != STAT (filename, &sbuf))
+ /* FIXME: should includeSymLinks be GNUNET_NO or GNUNET_YES here? */
+ if (GNUNET_OK != GNUNET_DISK_file_size (filename, &fsize, GNUNET_NO,
GNUNET_YES))
{
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING, "stat", filename);
return NULL;
@@ -129,7 +130,7 @@
}
ret =
GNUNET_FS_file_information_create_from_reader (h, client_info,
- sbuf.st_size,
+ fsize,
&GNUNET_FS_data_reader_file_,
fi, keywords, meta,
do_index, bo);
@@ -145,6 +146,9 @@
#endif
while (NULL != (ss = strstr (fn, DIR_SEPARATOR_STR)))
fn = ss + 1;
+/* FIXME: If we assume that on other platforms CRT is UTF-8-aware, then
+ * this should be changed to EXTRACTOR_METAFORMAT_UTF8
+ */
#if !WINDOWS
GNUNET_CONTAINER_meta_data_insert (ret->meta, "<gnunet>",
EXTRACTOR_METATYPE_GNUNET_ORIGINAL_FILENAME,
Modified: gnunet/src/fs/fs_unindex.c
===================================================================
--- gnunet/src/fs/fs_unindex.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/fs/fs_unindex.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -755,7 +755,7 @@
struct GNUNET_FS_ProgressInfo pi;
uint64_t size;
- if (GNUNET_OK != GNUNET_DISK_file_size (filename, &size, GNUNET_YES))
+ if (GNUNET_OK != GNUNET_DISK_file_size (filename, &size, GNUNET_YES,
GNUNET_YES))
return NULL;
ret = GNUNET_malloc (sizeof (struct GNUNET_FS_UnindexContext));
ret->h = h;
Modified: gnunet/src/fs/gnunet-directory.c
===================================================================
--- gnunet/src/fs/gnunet-directory.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/fs/gnunet-directory.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -136,7 +136,7 @@
i = 0;
while (NULL != (filename = args[i++]))
{
- if ((GNUNET_OK != GNUNET_DISK_file_size (filename, &size, GNUNET_YES)) ||
+ if ((GNUNET_OK != GNUNET_DISK_file_size (filename, &size, GNUNET_YES,
GNUNET_YES)) ||
(NULL ==
(h =
GNUNET_DISK_file_open (filename, GNUNET_DISK_OPEN_READ,
Modified: gnunet/src/fs/gnunet-helper-fs-publish.c
===================================================================
--- gnunet/src/fs/gnunet-helper-fs-publish.c 2012-03-19 10:47:35 UTC (rev
20599)
+++ gnunet/src/fs/gnunet-helper-fs-publish.c 2012-03-19 10:48:51 UTC (rev
20600)
@@ -69,7 +69,8 @@
char *filename;
/**
- * Size of the file (if it is a file), in bytes
+ * Size of the file (if it is a file), in bytes.
+ * At the moment it is set to 0 for directories.
*/
uint64_t file_size;
@@ -275,8 +276,11 @@
{
struct ScanTreeNode *item;
struct stat sbuf;
+ uint64_t fsize = 0;
- if (0 != STAT (filename, &sbuf))
+ if ((0 != STAT (filename, &sbuf)) ||
+ ((!S_ISDIR (sbuf.st_mode)) && (GNUNET_OK != GNUNET_DISK_file_size (
+ filename, &fsize, GNUNET_NO, GNUNET_YES))))
{
/* If the file doesn't exist (or is not stat-able for any other reason)
skip it (but report it), but do continue. */
@@ -297,7 +301,7 @@
item = GNUNET_malloc (sizeof (struct ScanTreeNode));
item->filename = GNUNET_strdup (filename);
item->is_directory = (S_ISDIR (sbuf.st_mode)) ? GNUNET_YES : GNUNET_NO;
- item->file_size = (uint64_t) sbuf.st_size;
+ item->file_size = fsize;
if (item->is_directory == GNUNET_YES)
{
struct RecursionContext rc;
Modified: gnunet/src/fs/test_fs_download.c
===================================================================
--- gnunet/src/fs/test_fs_download.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/fs/test_fs_download.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -118,7 +118,7 @@
GNUNET_FS_download_stop (download, GNUNET_YES);
download = NULL;
}
- GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_size (fn, &size, GNUNET_YES));
+ GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_size (fn, &size, GNUNET_YES,
GNUNET_NO));
GNUNET_assert (size == FILESIZE);
GNUNET_DISK_directory_remove (fn);
GNUNET_free (fn);
Modified: gnunet/src/fs/test_fs_download_indexed.c
===================================================================
--- gnunet/src/fs/test_fs_download_indexed.c 2012-03-19 10:47:35 UTC (rev
20599)
+++ gnunet/src/fs/test_fs_download_indexed.c 2012-03-19 10:48:51 UTC (rev
20600)
@@ -119,7 +119,7 @@
GNUNET_FS_download_stop (download, GNUNET_YES);
download = NULL;
}
- GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_size (fn, &size, GNUNET_YES));
+ GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_size (fn, &size, GNUNET_YES,
GNUNET_NO));
GNUNET_assert (size == FILESIZE);
GNUNET_DISK_directory_remove (fn);
GNUNET_free (fn);
Modified: gnunet/src/fs/test_fs_download_persistence.c
===================================================================
--- gnunet/src/fs/test_fs_download_persistence.c 2012-03-19 10:47:35 UTC
(rev 20599)
+++ gnunet/src/fs/test_fs_download_persistence.c 2012-03-19 10:48:51 UTC
(rev 20600)
@@ -113,7 +113,7 @@
GNUNET_FS_download_stop (download, GNUNET_YES);
download = NULL;
}
- GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_size (fn, &size, GNUNET_YES));
+ GNUNET_assert (GNUNET_OK == GNUNET_DISK_file_size (fn, &size, GNUNET_YES,
GNUNET_NO));
GNUNET_assert (size == FILESIZE);
GNUNET_DISK_directory_remove (fn);
GNUNET_free (fn);
Modified: gnunet/src/hello/gnunet-hello.c
===================================================================
--- gnunet/src/hello/gnunet-hello.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/hello/gnunet-hello.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -122,7 +122,7 @@
_("Call with name of HELLO file to modify.\n"));
return 1;
}
- if (GNUNET_OK != GNUNET_DISK_file_size (argv[1], &fsize, GNUNET_YES))
+ if (GNUNET_OK != GNUNET_DISK_file_size (argv[1], &fsize, GNUNET_YES,
GNUNET_YES))
{
FPRINTF (stderr,
_("Error accessing file `%s': %s\n"),
Modified: gnunet/src/include/gnunet_disk_lib.h
===================================================================
--- gnunet/src/include/gnunet_disk_lib.h 2012-03-19 10:47:35 UTC (rev
20599)
+++ gnunet/src/include/gnunet_disk_lib.h 2012-03-19 10:48:51 UTC (rev
20600)
@@ -302,8 +302,8 @@
/**
- * Get the size of the file (or directory)
- * of the given file (in bytes).
+ * Get the size of the file (or directory) of the given file (in
+ * bytes).
*
* @param filename name of the file or directory
* @param size set to the size of the file (or,
@@ -311,11 +311,13 @@
* of all sizes of files in the directory)
* @param includeSymLinks should symbolic links be
* included?
- * @return GNUNET_OK on success, GNUNET_SYSERR on error
+ * @param singleFileMode GNUNET_YES to only get size of one file
+ * and return GNUNET_SYSERR for directories.
+ * @return GNUNET_SYSERR on error, GNUNET_OK on success
*/
int
GNUNET_DISK_file_size (const char *filename, uint64_t * size,
- int includeSymLinks);
+ int includeSymLinks, int singleFileMode);
/**
Modified: gnunet/src/statistics/gnunet-service-statistics.c
===================================================================
--- gnunet/src/statistics/gnunet-service-statistics.c 2012-03-19 10:47:35 UTC
(rev 20599)
+++ gnunet/src/statistics/gnunet-service-statistics.c 2012-03-19 10:48:51 UTC
(rev 20600)
@@ -224,6 +224,7 @@
char *fn;
struct GNUNET_BIO_ReadHandle *rh;
struct stat sb;
+ uint64_t fsize;
char *buf;
struct GNUNET_SERVER_MessageStreamTokenizer *mst;
char *emsg;
@@ -232,12 +233,12 @@
NULL);
if (fn == NULL)
return;
- if ((0 != stat (fn, &sb)) || (sb.st_size == 0))
+ if ((GNUNET_OK != GNUNET_DISK_file_size (fn, &fsize, GNUNET_NO, GNUNET_YES))
|| (fsize == 0))
{
GNUNET_free (fn);
return;
}
- buf = GNUNET_malloc (sb.st_size);
+ buf = GNUNET_malloc (fsize);
rh = GNUNET_BIO_read_open (fn);
if (!rh)
{
@@ -245,7 +246,7 @@
GNUNET_free (fn);
return;
}
- if (GNUNET_OK != GNUNET_BIO_read (rh, fn, buf, sb.st_size))
+ if (GNUNET_OK != GNUNET_BIO_read (rh, fn, buf, fsize))
{
GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_WARNING, "read", fn);
GNUNET_break (GNUNET_OK == GNUNET_BIO_read_close (rh, &emsg));
@@ -256,10 +257,10 @@
}
GNUNET_log (GNUNET_ERROR_TYPE_INFO,
_("Loading %llu bytes of statistics from `%s'\n"),
- (unsigned long long) sb.st_size, fn);
+ fsize, fn);
mst = GNUNET_SERVER_mst_create (&inject_message, server);
GNUNET_break (GNUNET_OK ==
- GNUNET_SERVER_mst_receive (mst, NULL, buf, sb.st_size,
+ GNUNET_SERVER_mst_receive (mst, NULL, buf, fsize,
GNUNET_YES, GNUNET_NO));
GNUNET_SERVER_mst_destroy (mst);
GNUNET_free (buf);
Modified: gnunet/src/testing/gnunet-testing.c
===================================================================
--- gnunet/src/testing/gnunet-testing.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/testing/gnunet-testing.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -170,7 +170,7 @@
return 1;
}
- if (GNUNET_YES != GNUNET_DISK_file_size (hostkey_src_file, &fs,
GNUNET_YES))
+ if (GNUNET_OK != GNUNET_DISK_file_size (hostkey_src_file, &fs, GNUNET_YES,
GNUNET_YES))
fs = 0;
if (0 != (fs % HOSTKEYFILESIZE))
Modified: gnunet/src/testing/testing_group.c
===================================================================
--- gnunet/src/testing/testing_group.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/testing/testing_group.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -6078,7 +6078,7 @@
return NULL;
}
- if (GNUNET_YES != GNUNET_DISK_file_size (hostkeys_file, &fs, GNUNET_YES))
+ if (GNUNET_OK != GNUNET_DISK_file_size (hostkeys_file, &fs, GNUNET_YES,
GNUNET_YES))
fs = 0;
#if DEBUG_TESTING
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
Modified: gnunet/src/topology/gnunet-daemon-topology.c
===================================================================
--- gnunet/src/topology/gnunet-daemon-topology.c 2012-03-19 10:47:35 UTC
(rev 20599)
+++ gnunet/src/topology/gnunet-daemon-topology.c 2012-03-19 10:48:51 UTC
(rev 20600)
@@ -970,7 +970,7 @@
char *data;
size_t pos;
struct GNUNET_PeerIdentity pid;
- struct stat frstat;
+ uint64_t fsize;
struct GNUNET_CRYPTO_HashAsciiEncoded enc;
unsigned int entries_found;
struct Peer *fl;
@@ -987,7 +987,8 @@
GNUNET_DISK_fn_write (fn, NULL, 0,
GNUNET_DISK_PERM_USER_READ |
GNUNET_DISK_PERM_USER_WRITE);
- if (0 != STAT (fn, &frstat))
+ if (GNUNET_OK != GNUNET_DISK_file_size (fn,
+ &fsize, GNUNET_NO, GNUNET_YES))
{
if ((friends_only) || (minimum_friend_count > 0))
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -995,14 +996,14 @@
GNUNET_free (fn);
return;
}
- if (frstat.st_size == 0)
+ if (fsize == 0)
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING, _("Friends file `%s' is empty.\n"),
fn);
GNUNET_free (fn);
return;
}
- data = GNUNET_malloc_large (frstat.st_size);
+ data = GNUNET_malloc_large (fsize);
if (data == NULL)
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
@@ -1011,7 +1012,7 @@
GNUNET_free (fn);
return;
}
- if (frstat.st_size != GNUNET_DISK_fn_read (fn, data, frstat.st_size))
+ if (fsize != GNUNET_DISK_fn_read (fn, data, fsize))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_("Failed to read friends list from `%s'\n"), fn);
@@ -1021,11 +1022,11 @@
}
entries_found = 0;
pos = 0;
- while ((pos < frstat.st_size) && isspace ((unsigned char) data[pos]))
+ while ((pos < fsize) && isspace ((unsigned char) data[pos]))
pos++;
- while ((frstat.st_size >= sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)) &&
+ while ((fsize >= sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)) &&
(pos <=
- frstat.st_size - sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)))
+ fsize - sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)))
{
memcpy (&enc, &data[pos], sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded));
if (!isspace
@@ -1037,7 +1038,7 @@
("Syntax error in topology specification at offset %llu,
skipping bytes.\n"),
(unsigned long long) pos);
pos++;
- while ((pos < frstat.st_size) && (!isspace ((unsigned char) data[pos])))
+ while ((pos < fsize) && (!isspace ((unsigned char) data[pos])))
pos++;
continue;
}
@@ -1068,7 +1069,7 @@
}
}
pos = pos + sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded);
- while ((pos < frstat.st_size) && isspace ((unsigned char) data[pos]))
+ while ((pos < fsize) && isspace ((unsigned char) data[pos]))
pos++;
}
GNUNET_free (data);
Modified: gnunet/src/transport/gnunet-service-transport_blacklist.c
===================================================================
--- gnunet/src/transport/gnunet-service-transport_blacklist.c 2012-03-19
10:47:35 UTC (rev 20599)
+++ gnunet/src/transport/gnunet-service-transport_blacklist.c 2012-03-19
10:48:51 UTC (rev 20600)
@@ -221,7 +221,7 @@
size_t colon_pos;
int tsize;
struct GNUNET_PeerIdentity pid;
- struct stat frstat;
+ uint64_t fsize;
struct GNUNET_CRYPTO_HashAsciiEncoded enc;
unsigned int entries_found;
char *transport_name;
@@ -241,14 +241,15 @@
GNUNET_DISK_fn_write (fn, NULL, 0,
GNUNET_DISK_PERM_USER_READ |
GNUNET_DISK_PERM_USER_WRITE);
- if (0 != STAT (fn, &frstat))
+ if (GNUNET_OK != GNUNET_DISK_file_size (fn,
+ &fsize, GNUNET_NO, GNUNET_YES))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_("Could not read blacklist file `%s'\n"), fn);
GNUNET_free (fn);
return;
}
- if (frstat.st_size == 0)
+ if (fsize == 0)
{
#if DEBUG_TRANSPORT
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, _("Blacklist file `%s' is empty.\n"),
@@ -258,9 +259,9 @@
return;
}
/* FIXME: use mmap */
- data = GNUNET_malloc_large (frstat.st_size);
+ data = GNUNET_malloc_large (fsize);
GNUNET_assert (data != NULL);
- if (frstat.st_size != GNUNET_DISK_fn_read (fn, data, frstat.st_size))
+ if (fsize != GNUNET_DISK_fn_read (fn, data, fsize))
{
GNUNET_log (GNUNET_ERROR_TYPE_ERROR,
_("Failed to read blacklist from `%s'\n"), fn);
@@ -270,17 +271,17 @@
}
entries_found = 0;
pos = 0;
- while ((pos < frstat.st_size) && isspace ((unsigned char) data[pos]))
+ while ((pos < fsize) && isspace ((unsigned char) data[pos]))
pos++;
- while ((frstat.st_size >= sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)) &&
+ while ((fsize >= sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)) &&
(pos <=
- frstat.st_size - sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)))
+ fsize - sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded)))
{
colon_pos = pos;
- while ((colon_pos < frstat.st_size) && (data[colon_pos] != ':') &&
+ while ((colon_pos < fsize) && (data[colon_pos] != ':') &&
(!isspace ((unsigned char) data[colon_pos])))
colon_pos++;
- if (colon_pos >= frstat.st_size)
+ if (colon_pos >= fsize)
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
_
@@ -298,12 +299,12 @@
("Syntax error in blacklist file at offset %llu, skipping
bytes.\n"),
(unsigned long long) colon_pos);
pos = colon_pos;
- while ((pos < frstat.st_size) && isspace ((unsigned char) data[pos]))
+ while ((pos < fsize) && isspace ((unsigned char) data[pos]))
pos++;
continue;
}
tsize = colon_pos - pos;
- if ((pos >= frstat.st_size) || (pos + tsize >= frstat.st_size) ||
+ if ((pos >= fsize) || (pos + tsize >= fsize) ||
(tsize == 0))
{
GNUNET_log (GNUNET_ERROR_TYPE_WARNING,
@@ -336,7 +337,7 @@
("Syntax error in blacklist file at offset %llu, skipping
bytes.\n"),
(unsigned long long) pos);
pos++;
- while ((pos < frstat.st_size) && (!isspace ((unsigned char) data[pos])))
+ while ((pos < fsize) && (!isspace ((unsigned char) data[pos])))
pos++;
GNUNET_free_non_null (transport_name);
continue;
@@ -367,7 +368,7 @@
}
pos = pos + sizeof (struct GNUNET_CRYPTO_HashAsciiEncoded);
GNUNET_free_non_null (transport_name);
- while ((pos < frstat.st_size) && isspace ((unsigned char) data[pos]))
+ while ((pos < fsize) && isspace ((unsigned char) data[pos]))
pos++;
}
GNUNET_STATISTICS_update (GST_stats, "# Transport entries blacklisted",
Modified: gnunet/src/transport/plugin_transport_http_server.c
===================================================================
--- gnunet/src/transport/plugin_transport_http_server.c 2012-03-19 10:47:35 UTC
(rev 20599)
+++ gnunet/src/transport/plugin_transport_http_server.c 2012-03-19 10:48:51 UTC
(rev 20600)
@@ -95,12 +95,13 @@
server_load_file (const char *file)
{
struct GNUNET_DISK_FileHandle *gn_file;
- struct stat fstat;
+ uint64_t fsize;
char *text = NULL;
- if (0 != STAT (file, &fstat))
+ if (GNUNET_OK != GNUNET_DISK_file_size (file,
+ &fsize, GNUNET_NO, GNUNET_YES))
return NULL;
- text = GNUNET_malloc (fstat.st_size + 1);
+ text = GNUNET_malloc (fsize + 1);
gn_file =
GNUNET_DISK_file_open (file, GNUNET_DISK_OPEN_READ,
GNUNET_DISK_PERM_USER_READ);
@@ -109,13 +110,13 @@
GNUNET_free (text);
return NULL;
}
- if (GNUNET_SYSERR == GNUNET_DISK_file_read (gn_file, text, fstat.st_size))
+ if (GNUNET_SYSERR == GNUNET_DISK_file_read (gn_file, text, fsize))
{
GNUNET_free (text);
GNUNET_DISK_file_close (gn_file);
return NULL;
}
- text[fstat.st_size] = '\0';
+ text[fsize] = '\0';
GNUNET_DISK_file_close (gn_file);
return text;
}
Modified: gnunet/src/transport/transport-testing.c
===================================================================
--- gnunet/src/transport/transport-testing.c 2012-03-19 10:47:35 UTC (rev
20599)
+++ gnunet/src/transport/transport-testing.c 2012-03-19 10:48:51 UTC (rev
20600)
@@ -661,7 +661,7 @@
return NULL;
}
- if (GNUNET_YES != GNUNET_DISK_file_size (hostkeys_file, &fs, GNUNET_YES))
+ if (GNUNET_OK != GNUNET_DISK_file_size (hostkeys_file, &fs, GNUNET_YES,
GNUNET_YES))
fs = 0;
if (0 != (fs % HOSTKEYFILESIZE))
Modified: gnunet/src/util/crypto_hash.c
===================================================================
--- gnunet/src/util/crypto_hash.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/util/crypto_hash.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -220,7 +220,7 @@
return NULL;
}
fhc->bsize = blocksize;
- if (GNUNET_OK != GNUNET_DISK_file_size (filename, &fhc->fsize, GNUNET_NO))
+ if (GNUNET_OK != GNUNET_DISK_file_size (filename, &fhc->fsize, GNUNET_NO,
GNUNET_YES))
{
GNUNET_free (fhc->filename);
GNUNET_free (fhc);
Modified: gnunet/src/util/crypto_rsa.c
===================================================================
--- gnunet/src/util/crypto_rsa.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/util/crypto_rsa.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -726,7 +726,7 @@
return NULL;
}
- if (GNUNET_YES != GNUNET_DISK_file_size (filename, &fs, GNUNET_YES))
+ if (GNUNET_OK != GNUNET_DISK_file_size (filename, &fs, GNUNET_YES,
GNUNET_YES))
fs = 0;
if (fs < sizeof (struct GNUNET_CRYPTO_RsaPrivateKeyBinaryEncoded))
{
Modified: gnunet/src/util/disk.c
===================================================================
--- gnunet/src/util/disk.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/util/disk.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -112,6 +112,11 @@
* GNUNET_YES if symbolic links should be included.
*/
int include_sym_links;
+
+ /**
+ * GNUNET_YES if mode is file-only (return total == -1 for directories).
+ */
+ int single_file_mode;
};
@@ -176,6 +181,11 @@
return GNUNET_SYSERR;
}
#endif
+ if ((S_ISDIR (buf.st_mode)) && (gfsd->single_file_mode == GNUNET_YES))
+ {
+ errno = EISDIR;
+ return GNUNET_SYSERR;
+ }
if ((!S_ISLNK (buf.st_mode)) || (gfsd->include_sym_links == GNUNET_YES))
gfsd->total += buf.st_size;
if ((S_ISDIR (buf.st_mode)) && (0 == ACCESS (fn, X_OK)) &&
@@ -290,11 +300,13 @@
* of all sizes of files in the directory)
* @param includeSymLinks should symbolic links be
* included?
+ * @param singleFileMode GNUNET_YES to only get size of one file
+ * and return GNUNET_SYSERR for directories.
* @return GNUNET_SYSERR on error, GNUNET_OK on success
*/
int
GNUNET_DISK_file_size (const char *filename, uint64_t * size,
- int includeSymLinks)
+ int includeSymLinks, int singleFileMode)
{
struct GetFileSizeData gfsd;
int ret;
@@ -302,6 +314,7 @@
GNUNET_assert (size != NULL);
gfsd.total = 0;
gfsd.include_sym_links = includeSymLinks;
+ gfsd.single_file_mode = singleFileMode;
ret = getSizeRec (&gfsd, filename);
*size = gfsd.total;
return ret;
@@ -1350,7 +1363,7 @@
struct GNUNET_DISK_FileHandle *in;
struct GNUNET_DISK_FileHandle *out;
- if (GNUNET_OK != GNUNET_DISK_file_size (src, &size, GNUNET_YES))
+ if (GNUNET_OK != GNUNET_DISK_file_size (src, &size, GNUNET_YES, GNUNET_YES))
return GNUNET_SYSERR;
pos = 0;
in = GNUNET_DISK_file_open (src, GNUNET_DISK_OPEN_READ,
Modified: gnunet/src/util/pseudonym.c
===================================================================
--- gnunet/src/util/pseudonym.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/util/pseudonym.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -320,7 +320,7 @@
len = 0;
if (0 == STAT (fn, &sbuf))
- GNUNET_break (GNUNET_OK == GNUNET_DISK_file_size (fn, &len, GNUNET_YES));
+ GNUNET_break (GNUNET_OK == GNUNET_DISK_file_size (fn, &len, GNUNET_YES,
GNUNET_YES));
fh = GNUNET_DISK_file_open (fn,
GNUNET_DISK_OPEN_CREATE |
GNUNET_DISK_OPEN_READWRITE,
@@ -475,7 +475,7 @@
GNUNET_assert (fn != NULL);
if ((GNUNET_OK != GNUNET_DISK_file_test (fn) ||
- (GNUNET_OK != GNUNET_DISK_file_size (fn, &len, GNUNET_YES))) ||
+ (GNUNET_OK != GNUNET_DISK_file_size (fn, &len, GNUNET_YES,
GNUNET_YES))) ||
((idx + 1) * sizeof (GNUNET_HashCode) > len))
{
GNUNET_free (fn);
Modified: gnunet/src/util/test_disk.c
===================================================================
--- gnunet/src/util/test_disk.c 2012-03-19 10:47:35 UTC (rev 20599)
+++ gnunet/src/util/test_disk.c 2012-03-19 10:48:51 UTC (rev 20600)
@@ -97,7 +97,7 @@
GNUNET_break (5 == GNUNET_DISK_file_write (fh, "Hello", 5));
GNUNET_DISK_file_close (fh);
GNUNET_break (GNUNET_OK ==
- GNUNET_DISK_file_size (".testfile", &size, GNUNET_NO));
+ GNUNET_DISK_file_size (".testfile", &size, GNUNET_NO,
GNUNET_YES));
if (size != 5)
return 1;
GNUNET_break (0 == UNLINK (".testfile"));
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r20600 - in gnunet/src: fs hello include statistics testing topology transport util,
gnunet <=