summaryrefslogtreecommitdiffabout
path: root/cache.c
authorRamsay Jones <ramsay@ramsay1.demon.co.uk>2008-11-04 19:22:08 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-11-06 18:18:07 (UTC)
commitbdd4a56ad55720cde3b7b290b6b9fe4c57dc4f01 (patch) (unidiff)
tree80622b0e4c7a969453fa281b738c7cebc0412582 /cache.c
parenta918c068a695348e3f08f906b3e5845feb59d9a2 (diff)
downloadcgit-bdd4a56ad55720cde3b7b290b6b9fe4c57dc4f01.zip
cgit-bdd4a56ad55720cde3b7b290b6b9fe4c57dc4f01.tar.gz
cgit-bdd4a56ad55720cde3b7b290b6b9fe4c57dc4f01.tar.bz2
Fix some warnings to allow -Werror
The type used to declare the st_size field of a 'struct stat' can be a 32- or 64-bit sized type, which can vary from one platform to another, or even from one compilation to another. In particular, on linux, if you include the following define: #define _FILE_OFFSET_BITS 64 prior to including certain system header files, then the type used for the st_size field will be __off64_t, otherwise it will be an __off_t. Note that the above define is included at the top of git-compat-util.h. In cache.c, the "%zd" format specifier expects a "signed size_t", another type which can vary, when an __off64_t or a __off_t is provided. To supress the warning, use the PRIuMAX format specifier and cast the st_size field to uintmax_t. This should work an any platform for which git currently compiles. In ui-plain.c, the size parameter of sha1_object_info() and read_sha1_file() is defined to be "unsigned long *" not "size_t *". So, to supress the warning, simply declare size with the correct type. Signed-off-by: Ramsay Jones <ramsay@ramsay1.demon.co.uk> Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (limited to 'cache.c') (more/less context) (ignore whitespace changes)
-rw-r--r--cache.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/cache.c b/cache.c
index 57068a1..d7a8d5a 100644
--- a/cache.c
+++ b/cache.c
@@ -355,85 +355,85 @@ int cache_process(int size, const char *path, const char *key, int ttl,
355 slot.ttl = ttl; 355 slot.ttl = ttl;
356 slot.cache_name = filename; 356 slot.cache_name = filename;
357 slot.lock_name = lockname; 357 slot.lock_name = lockname;
358 slot.key = key; 358 slot.key = key;
359 slot.keylen = strlen(key); 359 slot.keylen = strlen(key);
360 return process_slot(&slot); 360 return process_slot(&slot);
361} 361}
362 362
363/* Return a strftime formatted date/time 363/* Return a strftime formatted date/time
364 * NB: the result from this function is to shared memory 364 * NB: the result from this function is to shared memory
365 */ 365 */
366char *sprintftime(const char *format, time_t time) 366char *sprintftime(const char *format, time_t time)
367{ 367{
368 static char buf[64]; 368 static char buf[64];
369 struct tm *tm; 369 struct tm *tm;
370 370
371 if (!time) 371 if (!time)
372 return NULL; 372 return NULL;
373 tm = gmtime(&time); 373 tm = gmtime(&time);
374 strftime(buf, sizeof(buf)-1, format, tm); 374 strftime(buf, sizeof(buf)-1, format, tm);
375 return buf; 375 return buf;
376} 376}
377 377
378int cache_ls(const char *path) 378int cache_ls(const char *path)
379{ 379{
380 DIR *dir; 380 DIR *dir;
381 struct dirent *ent; 381 struct dirent *ent;
382 int err = 0; 382 int err = 0;
383 struct cache_slot slot; 383 struct cache_slot slot;
384 char fullname[1024]; 384 char fullname[1024];
385 char *name; 385 char *name;
386 386
387 if (!path) { 387 if (!path) {
388 cache_log("[cgit] cache path not specified\n"); 388 cache_log("[cgit] cache path not specified\n");
389 return -1; 389 return -1;
390 } 390 }
391 if (strlen(path) > 1024 - 10) { 391 if (strlen(path) > 1024 - 10) {
392 cache_log("[cgit] cache path too long: %s\n", 392 cache_log("[cgit] cache path too long: %s\n",
393 path); 393 path);
394 return -1; 394 return -1;
395 } 395 }
396 dir = opendir(path); 396 dir = opendir(path);
397 if (!dir) { 397 if (!dir) {
398 err = errno; 398 err = errno;
399 cache_log("[cgit] unable to open path %s: %s (%d)\n", 399 cache_log("[cgit] unable to open path %s: %s (%d)\n",
400 path, strerror(err), err); 400 path, strerror(err), err);
401 return err; 401 return err;
402 } 402 }
403 strcpy(fullname, path); 403 strcpy(fullname, path);
404 name = fullname + strlen(path); 404 name = fullname + strlen(path);
405 if (*(name - 1) != '/') { 405 if (*(name - 1) != '/') {
406 *name++ = '/'; 406 *name++ = '/';
407 *name = '\0'; 407 *name = '\0';
408 } 408 }
409 slot.cache_name = fullname; 409 slot.cache_name = fullname;
410 while((ent = readdir(dir)) != NULL) { 410 while((ent = readdir(dir)) != NULL) {
411 if (strlen(ent->d_name) != 8) 411 if (strlen(ent->d_name) != 8)
412 continue; 412 continue;
413 strcpy(name, ent->d_name); 413 strcpy(name, ent->d_name);
414 if ((err = open_slot(&slot)) != 0) { 414 if ((err = open_slot(&slot)) != 0) {
415 cache_log("[cgit] unable to open path %s: %s (%d)\n", 415 cache_log("[cgit] unable to open path %s: %s (%d)\n",
416 fullname, strerror(err), err); 416 fullname, strerror(err), err);
417 continue; 417 continue;
418 } 418 }
419 printf("%s %s %10zd %s\n", 419 printf("%s %s %10"PRIuMAX" %s\n",
420 name, 420 name,
421 sprintftime("%Y-%m-%d %H:%M:%S", 421 sprintftime("%Y-%m-%d %H:%M:%S",
422 slot.cache_st.st_mtime), 422 slot.cache_st.st_mtime),
423 slot.cache_st.st_size, 423 (uintmax_t)slot.cache_st.st_size,
424 slot.buf); 424 slot.buf);
425 close_slot(&slot); 425 close_slot(&slot);
426 } 426 }
427 closedir(dir); 427 closedir(dir);
428 return 0; 428 return 0;
429} 429}
430 430
431/* Print a message to stdout */ 431/* Print a message to stdout */
432void cache_log(const char *format, ...) 432void cache_log(const char *format, ...)
433{ 433{
434 va_list args; 434 va_list args;
435 va_start(args, format); 435 va_start(args, format);
436 vfprintf(stderr, format, args); 436 vfprintf(stderr, format, args);
437 va_end(args); 437 va_end(args);
438} 438}
439 439