-/*
- * prototypes
- */
-int part_ok (CT, int);
-int type_ok (CT, int);
-void set_endian (void);
-int make_intermediates (char *);
-void content_error (char *, CT, char *, ...);
-void flush_errors (void);
+int
+part_ok (CT ct)
+{
+ char **ap;
+ int len;
+
+ /* a part is "ok", i.e., should be processed, if:
+ - there were no -part arguments
+ - this part is a multipart
+ */
+ if (npart == 0 || ct->c_type == CT_MULTIPART) {
+ return 1;
+ }
+
+ /* or if:
+ - this part is a an exact match for any -part option
+ - this part is a sub-part of any -part option
+ */
+ for (ap = parts; *ap; ap++) {
+ len = strlen(*ap);
+ if (!strncmp (*ap, ct->c_partno, len) &&
+ (!ct->c_partno[len] || ct->c_partno[len] == '.' )) {
+ return 1;
+ }
+ }