commit e074efe03ca2520950889990927aafe02934c05c
parent 479333262ab24b7d49375155a6bf22fd3bf84c53
Author: Kyle Milz <krwmilz@gmail.com>
Date:   Sat, 28 Aug 2021 15:25:01 +0000
Remove SELFAUTO support
Diffstat:
| M | filefind.c |  |  | 170 | ------------------------------------------------------------------------------- | 
| M | xdvi.c |  |  | 4 | ---- | 
| M | xdvi.h |  |  | 9 | --------- | 
3 files changed, 0 insertions(+), 183 deletions(-)
diff --git a/filefind.c b/filefind.c
@@ -372,158 +372,6 @@ ffputenv(key, keylen, value, flag)
 }
 
 
-#ifdef	SELFAUTO
-
-	/* contains values of SELFAUTOLOC, SELFAUTODIR, and SELFAUTOPARENT */
-static	const	char	*selfautostr	= NULL;
-static	int		selfautoloclen;
-static	int		selfautodirlen;
-static	int		selfautoparentlen;
-
-/*
- *	Resolve a symlink.  Returns the length of the new string.
- */
-
-static	int
-getrealname(pos, len)
-	int	pos;	/* position in ffline[] of beginning of filename */
-	int	len;	/* length of string in ffline[] */
-{
-	struct stat	statbuf;
-	char		*buffer;
-	int		bufsize;
-	char		*buf1;
-	int		pos1;
-	int		len1;
-
-	for (;;) {	/* loop over symlinks in chain */
-	    if (lstat(ffline + pos, &statbuf) != 0) {
-		perror(ffline + pos);
-		return len;
-	    }
-	    if (!S_ISLNK(statbuf.st_mode))
-		break;
-	    buffer = xmalloc(statbuf.st_size + 1);
-	    bufsize = readlink(ffline + pos, buffer, statbuf.st_size + 1);
-	    if (bufsize < 0 || bufsize > statbuf.st_size) {
-		perror(ffline + pos);
-		return len;
-	    }
-	    buffer[bufsize] = '\0';
-	    buf1 = buffer;
-	    if (buffer[0] == '/')	/* if absolute path, just replace */
-		pos1 = pos;	/* copy it to the beginning */
-	    else {
-		pos1 = pos + len;
-		/* find preceding slash */
-		while (pos1 > pos && ffline[--pos1] != '/') ;
-		/* get rid of multiple slashes */
-		while (pos1 > pos && ffline[pos1 - 1] == '/') --pos1;
-		for (;;) {
-		    if (buf1[0] == '.' && buf1[1] == '/')
-			buf1 += 2;
-		    else if (buf1[0] == '.' && buf1[1] == '.' && buf1[2] == '/')
-		    {
-			buf1 += 3;
-			ffline[pos1] = '\0';
-			pos1 = getrealname(pos, pos1 - pos) + pos;
-			/* back up to preceding slash */
-			while (pos1 > pos && ffline[--pos1] != '/') ;
-			/* get rid of multiple slashes */
-			while (pos1 > pos && ffline[pos1 - 1] == '/') --pos1;
-		    }
-		    else break;
-		    while (*buf1 == '/') ++buf1;
-		}
-		++pos1;	/* put the slash back */
-	    }
-	    len1 = buffer + bufsize + 1 - buf1;
-	    if (pos1 + len1 >= ffline_len)
-		expandline(pos1 + len1);
-	    bcopy(buf1, ffline + pos1, len1);
-	    free(buffer);
-	    len = pos1 + len1 - pos - 1;
-	}
-	return len;
-}
-
-
-/*
- *	Initialize SELFAUTOLOC, SELFAUTODIR, and SELFAUTOPARENT.
- */
-
-static	void
-selfautoinit(pos)
-	int	pos;
-{
-	const	char	*p;
-	int		len;
-	const	char	*path;
-	int		argv0len;
-	int		pos1;
-	struct stat	statbuf;
-
-	if (index(argv0, '/') != NULL) {  /* if program was called directly */
-	    len = strlen(argv0) + 1;
-	    if (pos + len >= ffline_len)
-		expandline(pos + len);
-	    bcopy(argv0, ffline + pos, len);
-	    --len;
-	}
-	else {			/* try to find it in $PATH */
-	    path = getenv("PATH");
-	    argv0len = strlen(argv0) + 1;
-	    len = 0;
-	    if (path != NULL)
-		for (;;) {
-		    p = sep_index(path);
-		    len = p - path;
-		    pos1 = pos + len;
-		    if (pos + len + argv0len >= ffline_len)
-			expandline(pos + len + argv0len);
-		    bcopy(path, ffline + pos, len);
-		    ffline[pos1] = '/';
-		    bcopy(argv0, ffline + pos1 + 1, argv0len);
-		    len += argv0len;
-		    if (stat(ffline + pos, &statbuf) == 0
-		      && S_ISREG(statbuf.st_mode)
-		      && (statbuf.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH)))
-			break;
-		    if (*p == '\0') {
-			len = 0;
-			break;
-		    }
-		    path = p + 1;
-		}
-	}
-
-	/* Now we have:  file name starting in ffline[pos], and len = length. */
-
-	len = getrealname(pos, len);
-	p = ffline + pos + len;
-	while (p > ffline + pos && *--p != '/') ;
-	selfautoloclen = p - (ffline + pos);
-	selfautostr = xmemdup(ffline + pos, selfautoloclen);
-	p = selfautostr + selfautoloclen;
-	while (p > selfautostr && *--p != '/') ;
-	selfautodirlen = p - selfautostr;
-	while (p > selfautostr && *--p != '/') ;
-	selfautoparentlen = p - selfautostr;
-
-	if (FFDEBUG) {
-	    fputs("SELFAUTOLOC = ", stdout);
-	    fwrite(selfautostr, 1, selfautoloclen, stdout);
-	    fputs("\nSELFAUTODIR = ", stdout);
-	    fwrite(selfautostr, 1, selfautodirlen, stdout);
-	    fputs("\nSELFAUTOPARENT = ", stdout);
-	    fwrite(selfautostr, 1, selfautoparentlen, stdout);
-	    putchar('\n');
-	}
-}
-
-#endif	/* SELFAUTO */
-
-
 /*
  *	Do a dollar substitution of this variable.  Return position in ffline.
  */
@@ -540,24 +388,6 @@ dollarsub(key, keylen, pos, percent)
 	const	char	*env_value;
 	struct envrec	*env_rec;
 
-#ifdef	SELFAUTO
-	if (keylen >= 11 && memcmp(key, "SELFAUTO", 8) == 0
-	  && ((keylen == 11
-	  && (memcmp(key + 8, "LOC", 3) == 0 || memcmp(key + 8, "DIR", 3) == 0))
-	  || (keylen == 14 && memcmp(key + 8, "PARENT", 6) == 0))) {
-	    int len;
-
-	    if (selfautostr == NULL)
-		selfautoinit(pos);
-	    len = (keylen != 11 ? selfautoparentlen
-	      : key[8] == 'L' ? selfautoloclen : selfautodirlen);
-	    if (pos + len >= ffline_len)
-		expandline(pos + len);
-	    bcopy(selfautostr, ffline + pos, len);
-	    return pos + len;
-	}
-#endif
-
 	if (pos + keylen >= ffline_len)
 	    expandline(pos + keylen);
 	bcopy(key, ffline + pos, keylen);
diff --git a/xdvi.c b/xdvi.c
@@ -1357,10 +1357,6 @@ main(argc, argv)
 	prog = rindex(*argv, '/');
 	if (prog != NULL) ++prog; else prog = *argv;
 
-#if SELFAUTO
-	argv0 = argv[0];
-#endif
-
 	top_level = XtInitialize(prog, "XDvi", options, XtNumber(options),
 	  &argc, argv);
 	XtAddActions(Actions, num_actions);
diff --git a/xdvi.h b/xdvi.h
@@ -56,11 +56,6 @@ NOTE:
 #define WORDS_BIGENDIAN 1
 #endif
 
-#if SELFAUTO && !defined(DEFAULT_CONFIG_PATH)
-#define	DEFAULT_CONFIG_PATH	\
-		".:$SELFAUTOLOC:$SELFAUTODIR:$SELFAUTOPARENT:$SELFAUTODIR/share/texmf/web2c:$SELFAUTOPARENT/share/texmf/web2c:$SELFAUTODIR/texmf/web2c:$SELFAUTOPARENT/texmf/web2c:$TETEXDIR:$TEXMF/web2c"
-#endif
-
 #undef CFGFILE				/* no cheating */
 
 #if defined(DEFAULT_CONFIG_PATH)
@@ -763,10 +758,6 @@ Atom	atoms[5];
 #define	XA_WM_DELETE_WINDOW	(atoms[3])
 #define	XA_WM_PROTOCOLS		(atoms[4])
 
-#ifdef	SELFAUTO
-const	char	*argv0;		/* argv[0] */
-#endif
-
 /********************************
  *	   Procedures		*
  *******************************/