1.1 diff -r 129e16d9b5f4 -r c22e1c0a64fd pdf_prim.c 1.2 --- a/pdf_prim.c Thu Mar 13 03:39:38 2003 +0000 1.3 +++ b/pdf_prim.c Thu Mar 13 06:56:57 2003 +0000 1.4 @@ -4,7 +4,7 @@ 1.5 * will be compressed using ITU-T T.6 (G4) fax encoding. 1.6 * 1.7 * PDF routines 1.8 - * $Id: pdf_prim.c,v 1.9 2003/03/11 23:43:56 eric Exp $ 1.9 + * $Id: pdf_prim.c,v 1.10 2003/03/12 22:56:57 eric Exp $ 1.10 * Copyright 2001, 2002, 2003 Eric Smith <eric@brouhaha.com> 1.11 * 1.12 * This program is free software; you can redistribute it and/or modify 1.13 @@ -192,6 +192,32 @@ 1.14 } 1.15 1.16 1.17 +void pdf_add_array_elem_unique (struct pdf_obj *array_obj, struct pdf_obj *val) 1.18 +{ 1.19 + struct pdf_array_elem *elem; 1.20 + 1.21 + if (array_obj->type == PT_IND_REF) 1.22 + array_obj = pdf_deref_ind_obj (array_obj); 1.23 + 1.24 + pdf_assert (array_obj->type == PT_ARRAY); 1.25 + 1.26 + for (elem = array_obj->val.array.first; elem; elem = elem->next) 1.27 + if (pdf_compare_obj (val, elem->val) == 0) 1.28 + return; 1.29 + 1.30 + elem = pdf_calloc (1, sizeof (struct pdf_array_elem)); 1.31 + 1.32 + elem->val = ref (val); 1.33 + 1.34 + if (! array_obj->val.array.first) 1.35 + array_obj->val.array.first = elem; 1.36 + else 1.37 + array_obj->val.array.last->next = elem; 1.38 + 1.39 + array_obj->val.array.last = elem; 1.40 +} 1.41 + 1.42 + 1.43 struct pdf_obj *pdf_new_obj (pdf_obj_type type) 1.44 { 1.45 struct pdf_obj *obj = pdf_calloc (1, sizeof (struct pdf_obj)); 1.46 @@ -374,6 +400,8 @@ 1.47 return (0); 1.48 case PT_STRING: 1.49 return (strcmp (o1->val.string, o2->val.string)); 1.50 + case PT_NAME: 1.51 + return (strcmp (o1->val.name, o2->val.name)); 1.52 default: 1.53 pdf_fatal ("invalid object type for comparison\n"); 1.54 }