|
|
1.1 root 1: /* edit.c - */
2:
3: #ifndef lint
4: static char *rcsid = "$Header: /f/osi/quipu/dish/RCS/edit.c,v 7.1 90/07/09 14:47:08 mrose Exp $";
5: #endif
6:
7: /*
8: * $Header: /f/osi/quipu/dish/RCS/edit.c,v 7.1 90/07/09 14:47:08 mrose Exp $
9: *
10: *
11: * $Log: edit.c,v $
12: * Revision 7.1 90/07/09 14:47:08 mrose
13: * sync
14: *
15: * Revision 7.0 89/11/23 22:20:04 mrose
16: * Release 6.0
17: *
18: */
19:
20: /*
21: * NOTICE
22: *
23: * Acquisition, use, and distribution of this module and related
24: * materials are subject to the restrictions of a license agreement.
25: * Consult the Preface in the User's Manual for the full terms of
26: * this agreement.
27: *
28: */
29:
30:
31: #include "manifest.h"
32: #include "quipu/util.h"
33: #include "psap.h"
34: #include "tailor.h"
35: #include <fcntl.h>
36: #include <sys/stat.h>
37:
38: extern char fname[];
39:
40: #define OPT (!frompipe || rps -> ps_byteno == 0 ? opt : rps)
41: #define RPS (!frompipe || opt -> ps_byteno == 0 ? rps : opt)
42: extern char frompipe;
43: extern PS opt, rps;
44:
45: editentry (argc, argv)
46: int argc;
47: char **argv;
48: {
49: char editbuf[LINESIZE];
50:
51: if (argc != 1) {
52: Usage (argv[0]);
53: return (NOTOK);
54: }
55:
56: (void) sprintf (editbuf, "%s %s",
57: _isodefile (isodebinpath, "editentry"), fname);
58:
59: return (execprog (editbuf));
60: }
61:
62:
63: execprog (str)
64: char *str;
65: {
66: char prog[LINESIZE];
67: int res;
68: extern char inbuf[];
69: extern int fd;
70: extern char remote_prob;
71:
72: if (frompipe) {
73:
74: /* sleep (1) */ /* needed on startup ? */
75:
76: (void) sprintf (prog, "e%s", str);
77:
78: send_pipe_aux (prog);
79:
80: if ((res = read_pipe_aux (prog,LINESIZE)) < 1) {
81: (void) fprintf (stderr, "read failure\n");
82: remote_prob = TRUE;
83: return (NOTOK);
84: } else {
85: if (res == 0) {
86: (void) fprintf (stderr, "read (0) failure\n");
87: remote_prob = TRUE;
88: return (NOTOK);
89: }
90: if ((res == 1) && (*prog == 'e')) {
91: remote_prob = FALSE;
92: return (NOTOK); /* remote error - abandon ! */
93: }
94: if (*fname != '/') {
95: char tempbuf[LINESIZE];
96:
97: /* relative path... prefix cwd */
98: *(prog + res) = 0;
99: (void) sprintf (tempbuf, "%s/%s", prog, fname);
100: (void) strcpy (fname, tempbuf);
101: }
102: }
103: } else
104: if (system (str) != 0)
105: return (NOTOK);
106:
107: return (OK);
108: }
109:
110:
111: get_password (str,buffer)
112: char * str;
113: char * buffer;
114: {
115:
116: char prog[LINESIZE];
117: int res;
118: extern char inbuf[];
119: extern int fd;
120: extern char remote_prob;
121: char * getpassword ();
122:
123: if (frompipe) {
124: (void) sprintf (prog, "p%s", str);
125:
126: send_pipe_aux (prog);
127:
128: if ((res = read_pipe_aux (prog,LINESIZE)) < 1) {
129: (void) fprintf (stderr, "read failure\n");
130: remote_prob = TRUE;
131: return;
132: } else {
133: if (res == 0) {
134: (void) fprintf (stderr, "read (0) failure\n");
135: remote_prob = TRUE;
136: return;
137: }
138: if ((res == 1) && (*prog == 'e')) {
139: remote_prob = FALSE;
140: return;
141: }
142: *(prog+res) = 0;
143: (void) strcpy (buffer, prog);
144: }
145: } else {
146: (void) sprintf (buffer,"Enter password for \"%s\": ",str);
147: (void) strcpy (buffer,getpassword (buffer));
148: }
149: }
150:
151: yesno (str)
152: char * str;
153: {
154: char prog[LINESIZE];
155: int res;
156: extern char inbuf[];
157: extern int fd;
158: extern char remote_prob;
159: char * getpassword ();
160:
161: if (frompipe) {
162: (void) sprintf (prog, "y%s", str);
163:
164: send_pipe_aux (prog);
165:
166: if ((res = read_pipe_aux (prog,LINESIZE)) < 1) {
167: (void) fprintf (stderr, "read failure\n");
168: remote_prob = TRUE;
169: return FALSE;
170: } else {
171: if (res == 0) {
172: (void) fprintf (stderr, "read (0) failure\n");
173: remote_prob = TRUE;
174: return FALSE;
175: }
176: if ((res == 1) && (*prog == 'e')) {
177: remote_prob = FALSE;
178: return FALSE;
179: }
180: }
181: } else {
182: ps_printf (OPT,"%s",str);
183: (void) fgets (prog, sizeof prog, stdin);
184: }
185:
186: if (prog[0] == 'y')
187: return TRUE;
188: else
189: return FALSE;
190: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.