-
-/*
- * mhlistsbr.c -- routines to list information about the
+/* mhlistsbr.c -- routines to list information about the
* -- contents of MIME messages
*
* This code is Copyright (c) 2002, by the authors of nmh. See the
#include <h/mime.h>
#include <h/mhparse.h>
#include <h/utils.h>
-
-/* mhmisc.c */
-int part_ok (CT);
-int type_ok (CT, int);
-void flush_errors (void);
+#include "mhmisc.h"
/*
* static prototypes
static int list_multi (CT, int, int, int, int, int);
static int list_partial (CT, int, int, int, int, int);
static int list_external (CT, int, int, int, int, int);
-static int list_application (CT, int, int, int, int, int);
static int list_encoding (CT);
case CT_AUDIO:
case CT_IMAGE:
case CT_VIDEO:
- return list_content (ct, toplevel, realsize, verbose, debug, dispo);
-
case CT_APPLICATION:
default:
- return list_application (ct, toplevel, realsize, verbose, debug,
- dispo);
+ return list_content (ct, toplevel, realsize, verbose, debug, dispo);
}
return 0; /* NOT REACHED */
}
-#define empty(s) ((s) ? (s) : "")
-
/*
* Method for listing information about a simple/generic content
*/
PM pm;
if (toplevel > 0)
- printf (LSTFMT2a, atoi (r1bindex (empty (ct->c_file), '/')));
+ printf (LSTFMT2a, atoi (r1bindex (FENDNULL(ct->c_file), '/')));
else
printf(toplevel < 0 ? "part " : " ");
- snprintf (buffer, sizeof(buffer), "%s/%s", empty (ci->ci_type),
- empty (ci->ci_subtype));
+ snprintf (buffer, sizeof(buffer), "%s/%s", FENDNULL(ci->ci_type),
+ FENDNULL(ci->ci_subtype));
if (verbose)
- printf (LSTFMT2bv, empty (ct->c_partno), buffer);
+ printf (LSTFMT2bv, FENDNULL(ct->c_partno), buffer);
else
- printf (LSTFMT2b, empty (ct->c_partno), buffer);
+ printf (LSTFMT2b, FENDNULL(ct->c_partno), buffer);
if (ct->c_cesizefnx && realsize)
size = (*ct->c_cesizefnx) (ct);
PM pm;
fflush (stdout);
- fprintf (stderr, " partno \"%s\"\n", empty (ct->c_partno));
+ fprintf (stderr, " partno \"%s\"\n", FENDNULL(ct->c_partno));
/* print MIME-Version line */
if (ct->c_vrsn)
fprintf (stderr, " %s:%s\n", TYPE_FIELD, ct->c_ctline);
/* print parsed elements of content type */
- fprintf (stderr, " type \"%s\"\n", empty (ci->ci_type));
- fprintf (stderr, " subtype \"%s\"\n", empty (ci->ci_subtype));
- fprintf (stderr, " comment \"%s\"\n", empty (ci->ci_comment));
- fprintf (stderr, " magic \"%s\"\n", empty (ci->ci_magic));
+ fprintf (stderr, " type \"%s\"\n", FENDNULL(ci->ci_type));
+ fprintf (stderr, " subtype \"%s\"\n", FENDNULL(ci->ci_subtype));
+ fprintf (stderr, " comment \"%s\"\n", FENDNULL(ci->ci_comment));
+ fprintf (stderr, " magic \"%s\"\n", FENDNULL(ci->ci_magic));
/* print parsed parameters attached to content type */
fprintf (stderr, " parameters\n");
get_param_value(pm, '?'));
/* print internal flags for type/subtype */
- fprintf (stderr, " type 0x%x subtype 0x%x params 0x%x\n",
- ct->c_type, ct->c_subtype,
- (unsigned int)(unsigned long) ct->c_ctparams);
+ fprintf(stderr, " type %#x subtype %#x params %p\n",
+ ct->c_type, ct->c_subtype, (void *)ct->c_ctparams);
- fprintf (stderr, " showproc \"%s\"\n", empty (ct->c_showproc));
- fprintf (stderr, " termproc \"%s\"\n", empty (ct->c_termproc));
- fprintf (stderr, " storeproc \"%s\"\n", empty (ct->c_storeproc));
+ fprintf (stderr, " showproc \"%s\"\n", FENDNULL(ct->c_showproc));
+ fprintf (stderr, " termproc \"%s\"\n", FENDNULL(ct->c_termproc));
+ fprintf (stderr, " storeproc \"%s\"\n", FENDNULL(ct->c_storeproc));
/* print transfer encoding information */
if (ct->c_celine)
fprintf (stderr, " %s:%s", ENCODING_FIELD, ct->c_celine);
/* print internal flags for transfer encoding */
- fprintf (stderr, " transfer encoding 0x%x params 0x%x\n",
- ct->c_encoding, (unsigned int)(unsigned long) &ct->c_cefile);
+ fprintf(stderr, " transfer encoding %#x params %p\n",
+ ct->c_encoding, (void *)&ct->c_cefile);
/* print Content-ID */
if (ct->c_id)
if (ct->c_dispo)
fprintf (stderr, " %s:%s", DISPO_FIELD, ct->c_dispo);
- fprintf(stderr, " disposition \"%s\"\n", empty (ct->c_dispo_type));
+ fprintf(stderr, " disposition \"%s\"\n", FENDNULL(ct->c_dispo_type));
fprintf(stderr, " disposition parameters\n");
for (pm = ct->c_dispo_first; pm; pm = pm->pm_next)
fprintf (stderr, " %s=\"%s\"\n", pm->pm_name,
get_param_value(pm, '?'));
- fprintf (stderr, " read fp 0x%x file \"%s\" begin %ld end %ld\n",
- (unsigned int)(unsigned long) ct->c_fp, empty (ct->c_file),
- ct->c_begin, ct->c_end);
+ fprintf(stderr, " read fp %p file \"%s\" begin %ld end %ld\n",
+ (void *)ct->c_fp, FENDNULL(ct->c_file), ct->c_begin, ct->c_end);
/* print more information about transfer encoding */
list_encoding (ct);
return OK;
}
-#undef empty
-
/*
* list content information for type "multipart"
list_content (ct, toplevel, realsize, verbose, debug, dispo);
if (verbose) {
- if (e->eb_name)
- printf ("\t name=\"%s\"\n", e->eb_name);
- if (e->eb_dir)
- printf ("\t directory=\"%s\"\n", e->eb_dir);
- if (e->eb_site)
- printf ("\t site=\"%s\"\n", e->eb_site);
- if (e->eb_server)
- printf ("\t server=\"%s\"\n", e->eb_server);
- if (e->eb_subject)
- printf ("\t subject=\"%s\"\n", e->eb_subject);
- if (e->eb_url)
- printf ("\t url=\"%s\"\n", e->eb_url);
-
- /* This must be defined */
- printf ("\t access-type=\"%s\"\n", e->eb_access);
-
- if (e->eb_mode)
- printf ("\t mode=\"%s\"\n", e->eb_mode);
- if (e->eb_permission)
- printf ("\t permission=\"%s\"\n", e->eb_permission);
-
+ if (!e->eb_access)
+ puts("\t [missing access-type]"); /* Must be defined. */
if (e->eb_flags == NOTOK)
puts("\t [service unavailable]");
-
}
/*
}
-/*
- * list content information for type "application"
- * This no longer needs to be a separate function. It used to
- * produce some output with verbose enabled, but that has been
- * moved to list_content ().
- */
-
-static int
-list_application (CT ct, int toplevel, int realsize, int verbose, int debug,
- int dispo)
-{
- list_content (ct, toplevel, realsize, verbose, debug, dispo);
-
- return OK;
-}
-
-
/*
* list information about the Content-Transfer-Encoding
* used by a content.
{
CE ce = &ct->c_cefile;
- fprintf (stderr, " decoded fp 0x%x file \"%s\"\n",
- (unsigned int)(unsigned long) ce->ce_fp,
- ce->ce_file ? ce->ce_file : "");
+ fprintf(stderr, " decoded fp %p file \"%s\"\n",
+ (void *)ce->ce_fp, FENDNULL(ce->ce_file));
return OK;
}