summaryrefslogtreecommitdiffstats
path: root/script.c
diff options
context:
space:
mode:
authorJames LewisMoss <dres@debian.org>2000-03-12 09:04:17 -0500
committerBryan Newbold <bnewbold@robocracy.org>2017-02-20 00:05:26 -0800
commit8cfce36c6a4fc2e0a0ab6ef2db66a23cbe462693 (patch)
tree17427e4f777ca85990a449fe939fbae29770b346 /script.c
parenta47af30d2f0e96afcd1f14b1984575c359faa3d6 (diff)
parent3278b75942bdbe706f7a0fba87729bb1e935b68b (diff)
downloadscm-8cfce36c6a4fc2e0a0ab6ef2db66a23cbe462693.tar.gz
scm-8cfce36c6a4fc2e0a0ab6ef2db66a23cbe462693.zip
Import Debian changes 5d2-3debian/5d2-3
scm (5d2-3) unstable frozen; urgency=low * Fix libncurses4-dev -> libncurses5-dev build depend (Closes: #58435) * Fix libreadline2-dev -> libreadline4-dev build depend. * Fix license location in copyright file (lintian warning) * Add tetex-bin as a build depend (needs makeinfo) (Closes: #53197) * Add -isp option to dpkg-gencontrol (lintian error) * Move scm to section interpreters. scm (5d2-2) unstable; urgency=low * Apply patch from upstream for bug in eval.c. (Picked up from comp.lang.scheme) * Add Build-Depends on slib, librx1g-dev, libncurses4-dev, libreadlineg2-dev. * Up standards version. * Correct description: this is an R5RS implementation now * Make sure no optimizations are done on m68k. (Closes: #52434) scm (5d2-1) unstable; urgency=low * New upstream. scm (5d1-2) unstable; urgency=low * Remove TAGS on clean (cut the diff back down to reasonable size). scm (5d1-1) unstable; urgency=low * New upstream. * move stuff to /usr/share. scm (5d0-3) unstable; urgency=low * Change scmlit call to ./scmlit call (missed one) (Fixes bugs #37455 and #35545) * Change man file permissions to 644 (fixes lintian warning) scm (5d0-2) unstable; urgency=low * Removed call to add_final in init_crs. lendwin doesn't do anything and scm was crashing when quit everytime in final_scm. * Changed copyright to reflect new source. scm (5d0-1) unstable; urgency=low * New upstream. * Changed (terms) to access "/usr/doc/copyright/GPL". * Changed regex to use -lrx scm (5c3-6) unstable; urgency=low * New maintainer.
Diffstat (limited to 'script.c')
-rw-r--r--script.c49
1 files changed, 37 insertions, 12 deletions
diff --git a/script.c b/script.c
index e1a63f1..efeaf5b 100644
--- a/script.c
+++ b/script.c
@@ -1,18 +1,18 @@
-/* Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc.
- *
+/* Copyright (C) 1994-1999 Free Software Foundation, Inc.
+ *
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, write to
- * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * the Free Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111, USA.
*
* As a special exception, the Free Software Foundation gives permission
* for additional uses of the text contained in its release of GUILE.
@@ -36,7 +36,7 @@
*
* If you write modifications of your own for GUILE, it is your choice
* whether to permit this exception to apply to your modifications.
- * If you do not wish that, delete this exception notice.
+ * If you do not wish that, delete this exception notice.
*/
/* "script.c" argv tricks for `#!' scripts.
@@ -140,10 +140,13 @@ char *script_find_executable(name)
if (!f) return 0L;
if ((fgetc(f)=='#') && (fgetc(f)=='!')) {
while (1) switch (tbuf[i++] = fgetc(f)) {
- case /*WHITE_SPACES*/ ' ':case '\t':case '\r':case '\f':
+ case ' ':
+ if (1==i) {i--; break;}
+ case '\t':case '\r':case '\f':
case EOF:
tbuf[--i] = 0;
fclose(f);
+ if (0==i) return 0L;
return scm_cat_path(0L, tbuf, 0L);
}
}
@@ -172,7 +175,7 @@ char *dld_find_executable(file)
implementation-vicinity of this program. Returns a newly allocated
string if successful, 0 if not */
-char *scm_find_impl_file(exec_path, generic_name, initname, sep)
+char *find_impl_file(exec_path, generic_name, initname, sep)
char *exec_path;
const char *generic_name, *initname, *sep;
{
@@ -234,13 +237,35 @@ char *scm_find_impl_file(exec_path, generic_name, initname, sep)
for(peer="lib";!0;peer="src") {
path = scm_cat_path(0L, exec_path, sepind);
if (path) {
- strncpy(path + sepind - 4, "lib", 3);
+ strncpy(path + sepind - 4, peer, 3);
path = scm_cat_path(path, generic_name, 0L);
path = scm_sep_init_try(path, sep, initname);
if (path) return path;
}
if (!strcmp(peer,"src")) break;
- }}}
+ }}
+
+ /* Look for initname in executable-name peer directory. */
+ path = scm_cat_path(0L, exec_path, sepind);
+ if (path) {
+ path[sepind - 4] = 0;
+ path = scm_cat_path(path, &exec_path[sepind], 0L);
+ path = scm_sep_init_try(path, sep, initname);
+ if (path) return path;
+ }
+
+ if (generic_name) {
+
+ /* Look for initname in generic peer directory. */
+ path = scm_cat_path(0L, exec_path, sepind);
+ if (path) {
+ path[sepind - 4] = 0;
+ path = scm_cat_path(path, generic_name, 0L);
+ path = scm_sep_init_try(path, sep, initname);
+ if (path) return path;
+ }
+ }
+ }
#ifdef MSDOS
if (strlen(extptr)) {
@@ -367,8 +392,8 @@ char **script_process_argv(argc, argv)
if (!(nargv = (char **)realloc(nargv, (1 + ++nargc) * sizeof(char*))))
return 0L;
else nargv[nargi++] = narg;
- fclose(f);
- nargv[nargi++] = argv[argi++];
+ fclose(f);
+ nargv[nargi++] = argv[argi++];
}
}
while (argi <= argc) nargv[nargi++] = argv[argi++];