1BSD/ex-1.1/ex_file.c

#include "ex.h"
/*
 * Ex - a text editor
 * Bill Joy UCB September 1977
 */

filename(comm)
	char comm;
{
	register c;

	c = getchar();
	if (endcmd(c)) {
		if (savedfile[0] == 0 && comm != 'f')
			error("No file|No current filename");
		strcpy(file, savedfile);
	} else {
		ungetchar(c);
		getone();
		c = comm;
		if (savedfile[0] == 0 && c != 'E' && c != 'e') {
			c = 'e';
			value(EDITED) = 0;
		}
		switch (c) {
			case 'f':
				value(EDITED) = 0;
			case 'e':
				if (savedfile[0])
					strcpy(altfile, savedfile);
				strcpy(savedfile, file);
				break;
			default:
				if (file[0])
					strcpy(altfile, file);
				break;
		}
	}
	if (value(HUSH) && comm != 'f' || comm == 'E')
		return;
	if (file[0] != 0) {
		lprintf("\"%s\"", file);
		if (comm == 'f') {
			if (value(EDITED))
				printf(" [Edited]");
			if (tchngflag)
				printf(" [Modified]");
		}
		flush();
	} else
		printf("No file ");
	if (comm == 'f')
		printf(mesg(" %d lin%c@in buffer"), dol - zero, dol == one ? 'e' : 'es');
}