1.1 --- a/pdf_prim.c Fri Mar 07 11:02:12 2003 +0000 1.2 +++ b/pdf_prim.c Fri Mar 07 11:02:31 2003 +0000 1.3 @@ -4,7 +4,7 @@ 1.4 * will be compressed using ITU-T T.6 (G4) fax encoding. 1.5 * 1.6 * PDF routines 1.7 - * $Id: pdf_prim.c,v 1.6 2003/03/04 17:58:36 eric Exp $ 1.8 + * $Id: pdf_prim.c,v 1.7 2003/03/07 03:02:31 eric Exp $ 1.9 * Copyright 2001, 2002, 2003 Eric Smith <eric@brouhaha.com> 1.10 * 1.11 * This program is free software; you can redistribute it and/or modify 1.12 @@ -357,6 +357,38 @@ 1.13 } 1.14 1.15 1.16 +int pdf_compare_obj (struct pdf_obj *o1, struct pdf_obj *o2) 1.17 +{ 1.18 + if (o1->type == PT_IND_REF) 1.19 + o1 = pdf_deref_ind_obj (o1); 1.20 + 1.21 + if (o2->type == PT_IND_REF) 1.22 + o2 = pdf_deref_ind_obj (o2); 1.23 + 1.24 + pdf_assert (o1->type == o2->type); 1.25 + 1.26 + switch (o1->type) 1.27 + { 1.28 + case PT_INTEGER: 1.29 + if (o1->val.integer < o2->val.integer) 1.30 + return (-1); 1.31 + if (o1->val.integer > o2->val.integer) 1.32 + return (1); 1.33 + return (0); 1.34 + case PT_REAL: 1.35 + if (o1->val.real < o2->val.real) 1.36 + return (-1); 1.37 + if (o1->val.real > o2->val.real) 1.38 + return (1); 1.39 + return (0); 1.40 + case PT_STRING: 1.41 + return (strcmp (o1->val.string, o2->val.string)); 1.42 + default: 1.43 + pdf_fatal ("invalid object type for comparison\n"); 1.44 + } 1.45 +} 1.46 + 1.47 + 1.48 static int name_char_needs_quoting (char c) 1.49 { 1.50 return ((c < '!') || (c > '~') || (c == '/') || (c == '\\') ||