Path: utzoo!mnetor!uunet!lll-winken!lll-tis!ames!mailrus!umix!nancy!eecae!super.upenn.edu!hyper.lap.upenn.edu!george From: george@hyper.lap.upenn.edu (George Zipperlen) Newsgroups: comp.sys.apollo Subject: Re: Using DM ce to edit mail, no go Message-ID: <4509@super.upenn.edu> Date: 5 May 88 02:14:15 GMT References: <5016@bcsaic.UUCP> <5060@cup.portal.com> <4496@super.upenn.edu> Sender: news@super.upenn.edu Reply-To: george@apollo.lap.upenn.edu (George Zipperlen) Organization: University of Pennsylvania, Language Analysis Project Lines: 180 Keywords: Display Manager, editor Summary: You CAN use DM editor on files w/upper case (at least since SR 9.5) Path: utzoo!mnetor!uunet!lll-winken!lll-tis!ames!mailrus!umix!nancy!eecae!super.upenn.edu!hyper.lap.upenn.edu!george From: george@hyper.lap.upenn.edu (George Zipperlen) Newsgroups: comp.sys.apollo Subject: Re: Using DM ce to edit mail, no go Message-ID: <4509@super.upenn.edu> Date: 5 May 88 02:14:15 GMT References: <5016@bcsaic.UUCP> <5060@cup.portal.com> <4496@super.upenn.edu> Sender: news@super.upenn.edu Reply-To: george@apollo.lap.upenn.edu (George Zipperlen) Organization: University of Pennsylvania, Language Analysis Project Lines: 180 Keywords: Display Manager, editor You CAN use the DM editor on files with upper case in the name, leading '.', etc. At least since SR9.5. My memory is vague with respect to SR9.2 and earlier, although I do recall problems with this at some point. You just have to quote the file name. There are problems with doing this from a shell script, unless you go through contortions like xdmc tdm; es 'ce @'' etc... On the off chance that someone will find it useful, I enclose a C program to invoke the DM editor. It is hereby placed in the public domain. It is provided asis, no warranty, etc. use as you see fit. I've tested it on the given problem - invoking DM editor from bezerkeley mail, and it worked for me. Disclaimer: we are running SR 9.7 now. ----CUT HERE--- /* dmedit: invoke display manager editor on file SYNTAX: dmedit path_name CODED: 4-May-1988 George Zipperlen NOTES: Sorry for the excess baggage with window parameters, font loading, etc. I wrote this program as a quick main around a function we already had. */ # define USAGE "path_name" # include "/sys/ins/base.ins.c" # include "/sys/ins/error.ins.c" # include "/sys/ins/ios.ins.c" # include "/sys/ins/pad.ins.c" # include # include # define null_str(s) (s[0] == '\0' ? 1 : 0) # define MAX_STRING_LEN 256 # define exit_ok 0 # define exit_error 1 # define exit_case_err 2 # define exit_list_err 3 typedef enum { read_mode, edit_mode, edit_wait_mode, list_mode, action_mode } file_mode_t; char * prog_name; void error_trace (msg) char msg[]; { fprintf (stderr, "\n%s: error in %s\n", prog_name, msg); } /* error_trace */ void error_check (msg, status) char msg[]; /* global inputs - prog_name */ status_$t status; { if (status.all != status_$ok) { error_trace (msg); error_$print (status); } /* if status ! ok */ } /* error_check */ void exit_prog (exit_flag, msg) int exit_flag; char msg[]; { if (exit_flag != exit_ok) { if (exit_flag == exit_case_err) fprintf (stderr, "\n%s: case_selector error in\n %s\n", prog_name, msg); else if (exit_flag == exit_list_err) fprintf (stderr, "\n%s: linked list error in %s\n", prog_name, msg); else error_trace (msg); } /* if exit_flag not ok */ exit (exit_flag); } /* exit_prog */ void case_error (format, val) char format[]; int val; { char message [MAX_STRING_LEN]; sprintf (message, format, val); exit_prog (exit_case_err, message); } /* case_error */ /* edit_file DESIGNED: 10-Jun-1985 George Zipperlen MODIFICATION LOG: 1-Apr-1987 George Zipperlen - Changes for SR9.5: dereference all formal array parameters passed to std_$call functions. 11-Nov-1986 George Zipperlen - Changes for SR9.2.3 replace STREAM calls with IOS calls 17-Mar-1985 George Zipperlen - optionally wait for edit_file to close (edit_wait_mode) 17-Dec-1985 George Zipperlen - edit access to files (file_mode parameter) DESCRIPTION: Open display manager window to a file for read or edit, optionally load given font. void edit_file (file_name, file_mode, window, new_font) char file_name []; file_mode_t file_mode; pad_$window_desc_t window; char new_font []; { static char old_font[MAX_STRING_LEN], dm_cmd[MAX_STRING_LEN]; ios_$id_t w_stream; pad_$type_t pad_type; boolean change_font; short fnw, fnh, fnl; status_$t status; switch (file_mode) { case read_mode: pad_type = pad_$read_edit; break; case edit_mode: case edit_wait_mode: pad_type = pad_$edit; break; default : case_error ("edit_file, mode = %d", file_mode); break; } change_font = ! null_str (new_font); if (change_font) { pad_$inq_font (stream_$stdout, fnw, fnh, old_font, 256, fnl, status); strcpy (dm_cmd, "FL "); strcat (dm_cmd, new_font); pad_$dm_cmd (stream_$stdout, dm_cmd, (short)strlen(dm_cmd), status); } pad_$create_window (*file_name, (short)strlen(file_name), pad_type, (short)1, window, w_stream, status); if (status.all == status_$ok) { pad_$pop_push_window (w_stream, 1, true, status); pad_$dm_cmd (stream_$stdout, "tn", 2, status); if (file_mode == edit_wait_mode) pad_$edit_wait (w_stream, status); } else { fprintf (stderr, "%s: error opening %s\n", prog_name, file_name); error_$print (status); } if (change_font) { strcpy (dm_cmd, "FL "); strncat (dm_cmd, old_font, fnl); pad_$dm_cmd (stream_$stdout, dm_cmd, (short)strlen(dm_cmd), status); } pad_$dm_cmd (stream_$stdout, "tn", 2, status); ios_$close (w_stream, status); } /* edit_file */ main (argc, argv) int argc; char *argv[]; { pad_$window_desc_t window; prog_name = argv[0]; window.top = 0; window.left = 0; window.width = 0; window.height = 0; /* 0 : use DM default window */ if (argc != 2) { fprintf (stderr, "%s: usage\n %s %s\n", prog_name, prog_name, USAGE); exit (1); } edit_file (argv[1], edit_wait_mode, window, ""); } /* main */ -------------------------------------------------------------------------------- George Zipperlen george@apollo.lap.upenn.edu Language Analysis Project (215)-898-1954 University of Pennsylvania Generic Disclaimer Philadelphia, Pa. 19103 Cute saying