+ /* 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;
+ }
+ }
+
+ return 0;
+}