-#define DEF_EDITOR "vi"
-
-/*
- * Invoke an editor on the given file. Which editor to use might change
- * installation to installation. For now, we use "vi". In any event,
- * the environment variable "EDITOR" overrides any default.
- */
-
-public edit(filename)
-String filename;
-{
- extern String getenv();
- String ed, src;
- File f;
- Symbol s;
- Address addr;
- char buff[10];
-
- ed = getenv("EDITOR");
- if (ed == nil) {
- ed = DEF_EDITOR;
- }
- if (filename == nil) {
- call(ed, stdin, stdout, cursource, nil);
- } else {
- f = fopen(filename, "r");
- if (f == nil) {
- s = which(identname(filename, true));
- if (not isblock(s)) {
- error("can't read \"%s\"", filename);
- }
- addr = firstline(s);
- if (addr == NOADDR) {
- error("no source for \"%s\"", filename);
- }
- src = srcfilename(addr);
- sprintf(buff, "+%d", srcline(addr));
- call(ed, stdin, stdout, buff, src, nil);
- } else {
- fclose(f);
- call(ed, stdin, stdout, filename, nil);
- }
- }
-}
-