eps@toaster.SFSU.EDU (Eric P. Scott) (06/15/91)
In article <3749@opal.cs.tu-berlin.de> gonzo@tub.cs.tu-berlin.de (SfR.) writes: > Does anybody know if elm is available in source > or NeXT binaries anywhere on the ftp hosts? elm has a Configure script ==> choices made here are frozen in the compiled code. You don't want binaries. Note that the current official elm release (2.3PL11) will not compile "out of the box" on NeXT computers. So far, the ELM Development Group has REFUSED to fix their distribution, claiming that everyone's hopes, wishes, desires, etc. will be answered by the 2.4 release--which has been delayed until the fall. So, I'm once again posting the attached set of UNOFFICIAL patches, which are applicable to ALL machines running elm--not just NeXTs. The "patch" utility can be obtained from archive sites; a NeXT binary is available from sutro.sfsu.edu [130.212.15.230] in pub/patch.Z; this is a compressed executable compiled under 1.0 and linked with shared libraries, so it will work on 1.0-2.1 systems. -=EPS=- ------- This is a reposting, updated for NeXT 2.0/2.1 users. The following unofficial patch is for ELM 2.3PL11 Fix: From rn, say "| patch -p -N -d DIR" where DIR is your elm source directory. Outside of rn, say "cd DIR; patch -p -N <thisarticle" Priority (NONE) . Change default sort order for compatibility with other MUAs (MED) . Fix ~v to properly invoke vi when elm is configured to use "builtin" or "none" as the default editor (MED) . Even if already_has_text is true, if the alternate_editor is "builtin" or "none" don't try to shell to it (HIGH) . Eliminate conflict with NeXT shared library (LOW) . Avoid creating extraneous process from ~! shell escape I strongly encourage the Elm Development Group to incorporate the last four parts in the next official patch. The first is purely a site preference. This does not include fixes to Configure for NeXT workstations. When running Configure on a NeXT... ...on 1.0/1.0a systems: For "Any additional cc flags?" specify -bsd For "Any additional libraries?" specify -lsys_s At "If you need to edit config.sh, do it as a shell escape here:" Change d_voidsig from 'define' to 'undef' Change passcat from 'cat /etc/passwd' to 'nidump passwd /' if you're not using YP/NIS, and don't have more than two levels of NetInfo hierarchy. (Consult a NeXTpert otherwise!) ...on 2.0/2.1 systems: same as above, except For "Any additional libraries?" just hit RETURN For "What is the full name of your C library?" specify /lib/libsys_s.a -=EPS=- ------- Index: hdrs/elm.h Prereq: 4.1.1.1 *** hdrs/elm.h.orig --- hdrs/elm.h *************** *** 142,148 **** int prompt_for_cc = 1; /* flag: ask user for "cc:" value? */ int sig_dashes = 1; /* flag: include dashes above sigs? */ ! int sortby = REVERSE SENT_DATE; /* how to sort incoming mail... */ long timeout = 600L; /* timeout (secs) on main prompt */ --- 142,148 ---- int prompt_for_cc = 1; /* flag: ask user for "cc:" value? */ int sig_dashes = 1; /* flag: include dashes above sigs? */ ! int sortby = MAILBOX_ORDER; /* how to sort incoming mail... */ long timeout = 600L; /* timeout (secs) on main prompt */ Index: hdrs/sysdefs.SH Prereq: 4.1.1.3 *** hdrs/sysdefs.SH.orig --- hdrs/sysdefs.SH *************** *** 100,105 **** --- 100,106 ---- #define readmsg_file ".elm/readmsg" #define emacs_editor "$emacs" + #define vi_editor "$vi" #define default_editor "$defeditor" #define mailhome "$maildir/" Index: src/editmsg.c Prereq: 4.1.1.4 *** src/editmsg.c.orig --- src/editmsg.c *************** *** 76,82 **** buffer[0] = '\0'; if (strcmp(editor, "builtin") == 0 || strcmp(editor, "none") == 0) { ! if (already_has_text) sprintf(buffer, "%s %s", alternative_editor, filename); else return(no_editor_edit_the_message(filename)); --- 76,83 ---- buffer[0] = '\0'; if (strcmp(editor, "builtin") == 0 || strcmp(editor, "none") == 0) { ! if (already_has_text && strcmp(alternative_editor, "builtin") && ! strcmp(alternative_editor, "none")) sprintf(buffer, "%s %s", alternative_editor, filename); else return(no_editor_edit_the_message(filename)); *************** *** 255,261 **** case 'v' : NewLine(); strcpy(buffer, editor); ! strcpy(editor, default_editor); fclose(edit_fd); (void) edit_the_message(filename,0); strcpy(editor, buffer); --- 256,262 ---- case 'v' : NewLine(); strcpy(buffer, editor); ! strcpy(editor, vi_editor); fclose(edit_fd); (void) edit_the_message(filename,0); strcpy(editor, buffer); *************** *** 305,311 **** if (( old_raw = RawState()) == ON) Raw(OFF); if (strlen(buffer) < 3) ! (void) system_call(shell, USER_SHELL, TRUE, TRUE); else (void) system_call((char *) buffer+2, USER_SHELL, TRUE, TRUE); if (old_raw == ON) --- 306,312 ---- if (( old_raw = RawState()) == ON) Raw(OFF); if (strlen(buffer) < 3) ! (void) system_call((char *)NULL, USER_SHELL, TRUE, TRUE); else (void) system_call((char *) buffer+2, USER_SHELL, TRUE, TRUE); if (old_raw == ON) Index: src/opt_utils.c Prereq: 4.1 *** opt_utils.c.orig --- opt_utils.c Fri *************** *** 186,192 **** #endif ! #if defined(BSD) && !defined(_POSIX_SOURCE) /** some supplementary string functions for Berkeley Unix systems **/ --- 186,192 ---- #endif ! #if defined(BSD) && !defined(_POSIX_SOURCE) && !defined(NeXT) /** some supplementary string functions for Berkeley Unix systems **/ Index: sys/syscall.c Prereq: 4.1.1.4 *** src/syscall.c.orig --- src/syscall.c *************** *** 218,224 **** #endif /* Go for it. */ ! execl(sh, argv_zero(sh), "-c", string, (char *) 0); /* If exec fails, we write a byte to the pipe before exiting. */ perror(sh); --- 218,225 ---- #endif /* Go for it. */ ! if (string) execl(sh, argv_zero(sh), "-c", string, (char *) 0); ! else execl(sh, argv_zero(sh), (char *) 0); /* If exec fails, we write a byte to the pipe before exiting. */ perror(sh);