From f34d50ad6bef28960114561064fd79f23edcab5b Mon Sep 17 00:00:00 2001 From: Andy Wingo Date: Sun, 7 Oct 2018 16:04:59 +0200 Subject: [PATCH] Deprecate scm_find_executable * libguile/deprecated.h: * libguile/deprecated.c (scm_find_executable): Deprecate. Use strdup instead of weird scm_cat_path function. * libguile/script.h: * libguile/script.c: Remove old decls. --- libguile/deprecated.c | 50 ++++++++++++++++++++++++++++++- libguile/deprecated.h | 2 ++ libguile/script.c | 70 +------------------------------------------ libguile/script.h | 1 - 4 files changed, 52 insertions(+), 71 deletions(-) diff --git a/libguile/deprecated.c b/libguile/deprecated.c index 2cc18fa07..cc8e78b97 100644 --- a/libguile/deprecated.c +++ b/libguile/deprecated.c @@ -21,9 +21,14 @@ # include #endif +#include +#include +#include + #define SCM_BUILDING_DEPRECATED_CODE #include "deprecation.h" +#include "gc.h" #include "deprecated.h" @@ -31,7 +36,50 @@ -/* Newly deprecated code goes here. */ +#ifndef MAXPATHLEN +#define MAXPATHLEN 80 +#endif /* ndef MAXPATHLEN */ +#ifndef X_OK +#define X_OK 1 +#endif /* ndef X_OK */ + +char * +scm_find_executable (const char *name) +{ + char tbuf[MAXPATHLEN]; + int i = 0, c; + FILE *f; + + scm_c_issue_deprecation_warning ("scm_find_executable is deprecated."); + + /* fprintf(stderr, "s_f_e checking access %s ->%d\n", name, access(name, X_OK)); fflush(stderr); */ + if (access (name, X_OK)) + return 0L; + f = fopen (name, "r"); + if (!f) + return 0L; + if ((fgetc (f) == '#') && (fgetc (f) == '!')) + { + while (1) + switch (c = fgetc (f)) + { + case /*WHITE_SPACES */ ' ': + case '\t': + case '\r': + case '\f': + case EOF: + tbuf[i] = 0; + fclose (f); + return strdup (tbuf); + default: + tbuf[i++] = c; + break; + } + } + fclose (f); + return strdup (name); +} + diff --git a/libguile/deprecated.h b/libguile/deprecated.h index e9b6f03af..543d1b813 100644 --- a/libguile/deprecated.h +++ b/libguile/deprecated.h @@ -111,6 +111,8 @@ typedef ptrdiff_t scm_t_ptrdiff SCM_DEPRECATED_TYPE; typedef struct scm_thread scm_i_thread SCM_DEPRECATED_TYPE; #undef SCM_DEPRECATED_TYPE +SCM_DEPRECATED char* scm_find_executable (const char *name); + void scm_i_init_deprecated (void); #endif diff --git a/libguile/script.c b/libguile/script.c index 637e7060a..6430484a3 100644 --- a/libguile/script.c +++ b/libguile/script.c @@ -53,33 +53,7 @@ #include "script.h" -/* Concatentate str2 onto str1 at position n and return concatenated - string if file exists; 0 otherwise. */ - -static char * -scm_cat_path (char *str1, const char *str2, long n) -{ - if (!n) - n = strlen (str2); - if (str1) - { - size_t len = strlen (str1); - str1 = (char *) realloc (str1, (size_t) (len + n + 1)); - if (!str1) - return 0L; - strncat (str1 + len, str2, n); - return str1; - } - str1 = (char *) scm_malloc ((size_t) (n + 1)); - if (!str1) - return 0L; - str1[0] = 0; - strncat (str1, str2, n); - return str1; -} - -#ifndef LINE_INCREMENTORS -#define LINE_INCREMENTORS '\n' +#ifndef WHITE_SPACES #ifdef MSDOS #define WHITE_SPACES ' ':case '\t':case '\r':case '\f':case 26 #else @@ -87,48 +61,6 @@ scm_cat_path (char *str1, const char *str2, long n) #endif /* def MSDOS */ #endif /* ndef LINE_INCREMENTORS */ -#ifndef MAXPATHLEN -#define MAXPATHLEN 80 -#endif /* ndef MAXPATHLEN */ -#ifndef X_OK -#define X_OK 1 -#endif /* ndef X_OK */ - -char * -scm_find_executable (const char *name) -{ - char tbuf[MAXPATHLEN]; - int i = 0, c; - FILE *f; - - /* fprintf(stderr, "s_f_e checking access %s ->%d\n", name, access(name, X_OK)); fflush(stderr); */ - if (access (name, X_OK)) - return 0L; - f = fopen (name, "r"); - if (!f) - return 0L; - if ((fgetc (f) == '#') && (fgetc (f) == '!')) - { - while (1) - switch (c = fgetc (f)) - { - case /*WHITE_SPACES */ ' ': - case '\t': - case '\r': - case '\f': - case EOF: - tbuf[i] = 0; - fclose (f); - return scm_cat_path (0L, tbuf, 0L); - default: - tbuf[i++] = c; - break; - } - } - fclose (f); - return scm_cat_path (0L, name, 0L); -} - /* Read a \nnn-style escape. We've just read the backslash. */ static int diff --git a/libguile/script.h b/libguile/script.h index 3c418b01e..51c3c618b 100644 --- a/libguile/script.h +++ b/libguile/script.h @@ -25,7 +25,6 @@ #include "libguile/scm.h" -SCM_API char *scm_find_executable (const char *name); SCM_API char **scm_get_meta_args (int argc, char **argv); SCM_API int scm_count_argv (char **argv); SCM_API void scm_shell_usage (int fatal, char *message);