aboutsummaryrefslogtreecommitdiff
path: root/src/triplet.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/triplet.c')
-rw-r--r--src/triplet.c17
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
70char * 71char *
71triplet_strdup (struct file_triplet *tp, const char *str) 72triplet_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
400static const char * 401static const char *
401expand_triplet_ls_full (struct metadef *def, void *data) 402expand_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)
437static const char * 438static const char *
438expand_triplet_ls_upload (struct metadef *def, void *data) 439expand_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
546static const char * 547static const char *
547expand_email_user (struct metadef *def, void *data) 548expand_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
561static const char * 562static const char *
562expand_report (struct metadef *def, void *data) 563expand_report (struct metadef *def, void *data)
563{ 564{
564 return report_string; 565 return report_string;
565} 566}
566 567
567static const char * 568static 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