- switch (attachformat) {
- case 0:
- /* Insert name, file mode, and Content-Id. */
- fprintf(composition_file,
- "#%s; name=\"%s\"; x-unix-mode=0%.3ho",
- content_type, ((p = strrchr(file_name, '/'))
- == (char *)0) ? file_name : p + 1,
- (unsigned short)(st.st_mode & 0777));
-
- if (strlen(file_name) > MAXPATHLEN) {
- clean_up_temporary_files();
- adios((char *)0, "attachment file name `%s' too long.",
- file_name);
- }
-
- sprintf(cmd, "file '%s'", file_name);
-
- if ((fp = popen(cmd, "r")) != (FILE *)0 &&
- fgets(cmd, sizeof (cmd), fp) != (char *)0) {
- *strchr(cmd, '\n') = '\0';
-
- /*
- ** The output of the "file" command is of the form
- **
- ** file: description
- **
- ** Strip off the "file:" and subsequent white space.
- */
-
- for (p = cmd; *p != '\0'; p++) {
- if (*p == ':') {
- for (p++; *p != '\0'; p++) {
- if (*p != '\t')
- break;
- }
- break;
- }
- }
-
- if (*p != '\0')
- /* Insert Content-Description. */
- fprintf(composition_file, " [ %s ]", p);
-
- pclose(fp);
- }
-
- break;
- case 1:
- if (stringdex(toabsdir(invo_name), file_name) == 0) {
- /*
- ** Content had been placed by send into a temp file.
- ** Don't generate Content-Disposition header, because
- ** it confuses Microsoft Outlook, Build 10.0.6626, at
- ** least.
- */
- fprintf(composition_file, "#%s <>", content_type);
- } else {
- /*
- ** Suppress Content-Id, insert simple
- ** Content-Disposition.
- */
- fprintf(composition_file,
- "#%s; name=\"%s\" <>{attachment}",
- content_type,
- ((p = strrchr(file_name, '/')) == (char *)0) ?
- file_name : p + 1);
- }