diff options
Diffstat (limited to 'src/triplet.c')
-rw-r--r-- | src/triplet.c | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/triplet.c b/src/triplet.c index 3083c64..9dfdf2c 100644 --- a/src/triplet.c +++ b/src/triplet.c | |||
@@ -51,24 +51,25 @@ hash_triplet_free (void *data) | |||
51 | free (tp->file[i].name); | 51 | free (tp->file[i].name); |
52 | } | 52 | } |
53 | 53 | ||
54 | free (tp->directive); | 54 | free (tp->directive); |
55 | free (tp->blurb); | 55 | free (tp->blurb); |
56 | free (tp->tmp); | 56 | free (tp->tmp); |
57 | txtacc_free (tp->acc); | 57 | txtacc_free (tp->acc); |
58 | 58 | ||
59 | /* Free uploader list */ | 59 | /* Free uploader list */ |
60 | for (up = tp->uploader_list; up; ) | 60 | for (up = tp->uploader_list; up; ) |
61 | { | 61 | { |
62 | struct uploader_info *next = up->next; | 62 | struct uploader_info *next = up->next; |
63 | free (up->fpr); | ||
63 | free (up); | 64 | free (up); |
64 | up = next; | 65 | up = next; |
65 | } | 66 | } |
66 | 67 | ||
67 | free (tp); | 68 | free (tp); |
68 | } | 69 | } |
69 | 70 | ||
70 | char * | 71 | char * |
71 | triplet_strdup (struct file_triplet *tp, const char *str) | 72 | triplet_strdup (struct file_triplet *tp, const char *str) |
72 | { | 73 | { |
73 | size_t len = strlen (str); | 74 | size_t len = strlen (str); |
74 | txtacc_grow (tp->acc, str, len + 1); | 75 | txtacc_grow (tp->acc, str, len + 1); |
@@ -85,25 +86,25 @@ register_file (struct file_info *finfo, const struct spool *spool) | |||
85 | if (!triplet_table) | 86 | if (!triplet_table) |
86 | { | 87 | { |
87 | triplet_table = grecs_symtab_create (sizeof (struct file_triplet), | 88 | triplet_table = grecs_symtab_create (sizeof (struct file_triplet), |
88 | hash_triplet_hasher, | 89 | hash_triplet_hasher, |
89 | hash_triplet_compare, | 90 | hash_triplet_compare, |
90 | NULL, | 91 | NULL, |
91 | NULL, | 92 | NULL, |
92 | hash_triplet_free); | 93 | hash_triplet_free); |
93 | if (!triplet_table) | 94 | if (!triplet_table) |
94 | grecs_alloc_die (); | 95 | grecs_alloc_die (); |
95 | } | 96 | } |
96 | 97 | ||
97 | key.name = xmalloc (finfo->root_len + 1); | 98 | key.name = grecs_malloc (finfo->root_len + 1); |
98 | memcpy (key.name, finfo->name, finfo->root_len); | 99 | memcpy (key.name, finfo->name, finfo->root_len); |
99 | key.name[finfo->root_len] = 0; | 100 | key.name[finfo->root_len] = 0; |
100 | 101 | ||
101 | ret = grecs_symtab_lookup_or_install (triplet_table, &key, &install); | 102 | ret = grecs_symtab_lookup_or_install (triplet_table, &key, &install); |
102 | if (!ret) | 103 | if (!ret) |
103 | grecs_alloc_die (); | 104 | grecs_alloc_die (); |
104 | free (key.name); | 105 | free (key.name); |
105 | if (install) | 106 | if (install) |
106 | { | 107 | { |
107 | ret->spool = spool; | 108 | ret->spool = spool; |
108 | ret->acc = txtacc_create (); | 109 | ret->acc = txtacc_create (); |
109 | } | 110 | } |
@@ -369,58 +370,58 @@ format_file_data (struct file_triplet *trp, enum file_type type, char **pret) | |||
369 | user_name = "unknown"; | 370 | user_name = "unknown"; |
370 | else | 371 | else |
371 | user_name = pw->pw_name; | 372 | user_name = pw->pw_name; |
372 | 373 | ||
373 | grp = getgrgid (TRIPLET_GID (trp)); | 374 | grp = getgrgid (TRIPLET_GID (trp)); |
374 | if (!grp) | 375 | if (!grp) |
375 | group_name = "unknown"; /* should not happen */ | 376 | group_name = "unknown"; /* should not happen */ |
376 | else | 377 | else |
377 | group_name = grp->gr_name; | 378 | group_name = grp->gr_name; |
378 | 379 | ||
379 | /* Size */ | 380 | /* Size */ |
380 | if (grecs_asprintf (&sptr, &slen, "%lu", (unsigned long) info->sb.st_size)) | 381 | if (grecs_asprintf (&sptr, &slen, "%lu", (unsigned long) info->sb.st_size)) |
381 | xalloc_die (); | 382 | grecs_alloc_die (); |
382 | 383 | ||
383 | /* Figure out padding and format the buffer */ | 384 | /* Figure out padding and format the buffer */ |
384 | slen = strlen (sptr); | 385 | slen = strlen (sptr); |
385 | pad = strlen (user_name) + 1 + strlen (group_name) + 1 + slen; | 386 | pad = strlen (user_name) + 1 + strlen (group_name) + 1 + slen; |
386 | if (pad > ugswidth) | 387 | if (pad > ugswidth) |
387 | ugswidth = pad; | 388 | ugswidth = pad; |
388 | 389 | ||
389 | if (grecs_asprintf (&buf, &size, | 390 | if (grecs_asprintf (&buf, &size, |
390 | "%s %s %s %*s %s %s", | 391 | "%s %s %s %*s %s %s", |
391 | modes, user_name, group_name, ugswidth - pad + slen, | 392 | modes, user_name, group_name, ugswidth - pad + slen, |
392 | sptr, | 393 | sptr, |
393 | timebuf, info->name)) | 394 | timebuf, info->name)) |
394 | xalloc_die (); | 395 | grecs_alloc_die (); |
395 | free (sptr); | 396 | free (sptr); |
396 | *pret = buf; | 397 | *pret = buf; |
397 | return 0; | 398 | return 0; |
398 | } | 399 | } |
399 | 400 | ||
400 | static const char * | 401 | static const char * |
401 | expand_triplet_ls_full (struct metadef *def, void *data) | 402 | expand_triplet_ls_full (struct metadef *def, void *data) |
402 | { | 403 | { |
403 | struct file_triplet *trp = data; | 404 | struct file_triplet *trp = data; |
404 | char *buf[FILE_TYPE_COUNT] = { NULL, NULL, NULL }; | 405 | char *buf[FILE_TYPE_COUNT] = { NULL, NULL, NULL }; |
405 | size_t size = 0; | 406 | size_t size = 0; |
406 | 407 | ||
407 | if (format_file_data (trp, file_dist, &buf[file_dist]) == 0) | 408 | if (format_file_data (trp, file_dist, &buf[file_dist]) == 0) |
408 | size += strlen (buf[file_dist]) + 1; | 409 | size += strlen (buf[file_dist]) + 1; |
409 | if (format_file_data (trp, file_signature, &buf[file_signature]) == 0) | 410 | if (format_file_data (trp, file_signature, &buf[file_signature]) == 0) |
410 | size += strlen (buf[file_signature]) + 1; | 411 | size += strlen (buf[file_signature]) + 1; |
411 | if (format_file_data (trp, file_directive, &buf[file_directive]) == 0) | 412 | if (format_file_data (trp, file_directive, &buf[file_directive]) == 0) |
412 | size += strlen (buf[file_directive]) + 1; | 413 | size += strlen (buf[file_directive]) + 1; |
413 | 414 | ||
414 | def->value = def->storage = xmalloc (size + 1); | 415 | def->value = def->storage = grecs_malloc (size + 1); |
415 | def->value[0] = 0; | 416 | def->value[0] = 0; |
416 | if (buf[file_dist]) | 417 | if (buf[file_dist]) |
417 | { | 418 | { |
418 | strcat (def->value, buf[file_dist]); | 419 | strcat (def->value, buf[file_dist]); |
419 | strcat (def->value, "\n"); | 420 | strcat (def->value, "\n"); |
420 | } | 421 | } |
421 | if (buf[file_signature]) | 422 | if (buf[file_signature]) |
422 | { | 423 | { |
423 | strcat (def->value, buf[file_signature]); | 424 | strcat (def->value, buf[file_signature]); |
424 | strcat (def->value, "\n"); | 425 | strcat (def->value, "\n"); |
425 | } | 426 | } |
426 | if (buf[file_directive]) | 427 | if (buf[file_directive]) |
@@ -437,25 +438,25 @@ expand_triplet_ls_full (struct metadef *def, void *data) | |||
437 | static const char * | 438 | static const char * |
438 | expand_triplet_ls_upload (struct metadef *def, void *data) | 439 | expand_triplet_ls_upload (struct metadef *def, void *data) |
439 | { | 440 | { |
440 | struct file_triplet *trp = data; | 441 | struct file_triplet *trp = data; |
441 | char *buf[2] = { NULL, NULL }; | 442 | char *buf[2] = { NULL, NULL }; |
442 | size_t size = 0; | 443 | size_t size = 0; |
443 | 444 | ||
444 | if (format_file_data (trp, file_dist, &buf[file_dist]) == 0) | 445 | if (format_file_data (trp, file_dist, &buf[file_dist]) == 0) |
445 | size += strlen (buf[file_dist]) + 1; | 446 | size += strlen (buf[file_dist]) + 1; |
446 | if (format_file_data (trp, file_signature, &buf[file_signature]) == 0) | 447 | if (format_file_data (trp, file_signature, &buf[file_signature]) == 0) |
447 | size += strlen (buf[file_signature]) + 1; | 448 | size += strlen (buf[file_signature]) + 1; |
448 | 449 | ||
449 | def->value = def->storage = xmalloc (size + 1); | 450 | def->value = def->storage = grecs_malloc (size + 1); |
450 | def->value[0] = 0; | 451 | def->value[0] = 0; |
451 | if (buf[file_dist]) | 452 | if (buf[file_dist]) |
452 | { | 453 | { |
453 | strcat (def->value, buf[file_dist]); | 454 | strcat (def->value, buf[file_dist]); |
454 | strcat (def->value, "\n"); | 455 | strcat (def->value, "\n"); |
455 | } | 456 | } |
456 | if (buf[file_signature]) | 457 | if (buf[file_signature]) |
457 | { | 458 | { |
458 | strcat (def->value, buf[file_signature]); | 459 | strcat (def->value, buf[file_signature]); |
459 | strcat (def->value, "\n"); | 460 | strcat (def->value, "\n"); |
460 | } | 461 | } |
461 | 462 | ||
@@ -543,25 +544,25 @@ expand_user_email (struct metadef *def, void *data) | |||
543 | return def->value; | 544 | return def->value; |
544 | } | 545 | } |
545 | 546 | ||
546 | static const char * | 547 | static const char * |
547 | expand_email_user (struct metadef *def, void *data) | 548 | expand_email_user (struct metadef *def, void *data) |
548 | { | 549 | { |
549 | struct file_triplet *trp = data; | 550 | struct file_triplet *trp = data; |
550 | if (trp->uploader) | 551 | if (trp->uploader) |
551 | { | 552 | { |
552 | size_t size = 0; | 553 | size_t size = 0; |
553 | if (grecs_asprintf (&def->storage, &size, "\"%s\" <%s>", | 554 | if (grecs_asprintf (&def->storage, &size, "\"%s\" <%s>", |
554 | trp->uploader->realname, trp->uploader->email)) | 555 | trp->uploader->realname, trp->uploader->email)) |
555 | xalloc_die (); | 556 | grecs_alloc_die (); |
556 | def->value = def->storage; | 557 | def->value = def->storage; |
557 | } | 558 | } |
558 | return def->value; | 559 | return def->value; |
559 | } | 560 | } |
560 | 561 | ||
561 | static const char * | 562 | static const char * |
562 | expand_report (struct metadef *def, void *data) | 563 | expand_report (struct metadef *def, void *data) |
563 | { | 564 | { |
564 | return report_string; | 565 | return report_string; |
565 | } | 566 | } |
566 | 567 | ||
567 | static const char * | 568 | static const char * |
@@ -585,33 +586,33 @@ expand_check_result (struct metadef *def, void *data) | |||
585 | { | 586 | { |
586 | struct file_triplet *trp = data; | 587 | struct file_triplet *trp = data; |
587 | int status = trp->check_resu |