summaryrefslogtreecommitdiff
path: root/posix
diff options
context:
space:
mode:
Diffstat (limited to 'posix')
-rw-r--r--posix/Makefile4
-rw-r--r--posix/confstr.c13
-rw-r--r--posix/execvp.c66
-rw-r--r--posix/getconf.c14
-rwxr-xr-xposix/globtest.sh16
-rw-r--r--posix/sys/types.h35
-rw-r--r--posix/sys/utsname.h12
-rw-r--r--posix/sys/wait.h60
-rw-r--r--posix/unistd.h71
-rw-r--r--posix/wordexp.c20
10 files changed, 222 insertions, 89 deletions
diff --git a/posix/Makefile b/posix/Makefile
index a8adb1fe81..b7050867e4 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -49,7 +49,7 @@ routines := \
sched_setp sched_getp sched_sets sched_gets sched_yield sched_primax \
sched_primin sched_rr_gi \
getaddrinfo gai_strerror wordexp \
- pread pwrite
+ pread pwrite pread64 pwrite64
aux := init-posix environ
tests := tstgetopt testfnm runtests
@@ -65,7 +65,7 @@ include ../Rules
ifeq (no,$(cross-compiling))
tests: $(objpfx)globtest
- $(SHELL) -e globtest.sh $(common-objpfx)
+ $(SHELL) -e globtest.sh $(common-objpfx) $(elf-objpfx) $(rtld-installed-name)
endif
CFLAGS-regex.c = -Wno-unused -Wno-strict-prototypes
diff --git a/posix/confstr.c b/posix/confstr.c
index 850130b2a9..98bdc65d0b 100644
--- a/posix/confstr.c
+++ b/posix/confstr.c
@@ -44,6 +44,19 @@ confstr (name, buf, len)
}
break;
+ case _CS_LFS_CFLAGS:
+ case _CS_LFS_LINTFLAGS:
+ case _CS_LFS_LDFLAGS:
+ case _CS_LFS_LIBS:
+ case _CS_LFS64_CFLAGS:
+ case _CS_LFS64_LINTFLAGS:
+ case _CS_LFS64_LDFLAGS:
+ case _CS_LFS64_LIBS:
+ /* GNU libc does not require special actions to use LFS. */
+ string = "";
+ string_len = 1;
+ break;
+
default:
__set_errno (EINVAL);
return 0;
diff --git a/posix/execvp.c b/posix/execvp.c
index fc37638f06..26c7be99ab 100644
--- a/posix/execvp.c
+++ b/posix/execvp.c
@@ -23,6 +23,41 @@
#include <errno.h>
#include <paths.h>
+
+static void
+internal_function
+execute (const char *file, char *const argv[])
+{
+ execv (file, argv);
+
+ if (errno == ENOEXEC)
+ {
+ /* The file is accessible but it is not an executable file.
+ Invoke the shell to interpret it as a script. */
+
+ /* Count the arguments. */
+ int argc = 0;
+ while (argv[argc++])
+ ;
+
+ /* Construct an argument list for the shell. */
+ {
+ char *new_argv[argc + 1];
+ new_argv[0] = (char *) _PATH_BSHELL;
+ new_argv[1] = (char *) file;
+ while (argc > 1)
+ {
+ new_argv[argc] = argv[argc - 1];
+ --argc;
+ }
+
+ /* Execute the shell. */
+ execv (new_argv[0], new_argv);
+ }
+ }
+}
+
+
/* Execute FILE, searching in the `PATH' environment variable if it contains
no slashes, with arguments ARGV and environment from `environ'. */
int
@@ -32,37 +67,6 @@ execvp (file, argv)
{
int got_eacces = 0;
- void execute (const char *file, char *const argv[])
- {
- execv (file, argv);
-
- if (errno == ENOEXEC)
- {
- /* The file is accessible but it is not an executable file.
- Invoke the shell to interpret it as a script. */
-
- /* Count the arguments. */
- int argc = 0;
- while (argv[argc++])
- ;
-
- /* Construct an argument list for the shell. */
- {
- char *new_argv[argc + 1];
- new_argv[0] = (char *) _PATH_BSHELL;
- new_argv[1] = (char *) file;
- while (argc > 1)
- {
- new_argv[argc] = argv[argc - 1];
- --argc;
- }
-
- /* Execute the shell. */
- execv (new_argv[0], new_argv);
- }
- }
- }
-
if (strchr (file, '/') != NULL)
/* Don't search when it contains a slash. */
execute (file, argv);
diff --git a/posix/getconf.c b/posix/getconf.c
index 5b67a281df..c6371cb60b 100644
--- a/posix/getconf.c
+++ b/posix/getconf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1995, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1995, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -31,7 +31,7 @@ struct conf
const enum { SYSCONF, CONFSTR, PATHCONF } call;
};
-static struct conf vars[] =
+static const struct conf vars[] =
{
{ "LINK_MAX", _PC_LINK_MAX, PATHCONF },
{ "_POSIX_LINK_MAX", _PC_LINK_MAX, PATHCONF },
@@ -188,6 +188,16 @@ static struct conf vars[] =
{ "PATH", _CS_PATH, CONFSTR },
{ "CS_PATH", _CS_PATH, CONFSTR },
+ /* LFS */
+ { "LFS_CFLAGS", _CS_LFS_CFLAGS, CONFSTR },
+ { "LFS_LDFLAGS", _CS_LFS_LDFLAGS, CONFSTR },
+ { "LFS_LIBS", _CS_LFS_LIBS, CONFSTR },
+ { "LFS_LINTFLAGS", _CS_LFS_LINTFLAGS, CONFSTR },
+ { "LFS64_CFLAGS", _CS_LFS64_CFLAGS, CONFSTR },
+ { "LFS64_LDFLAGS", _CS_LFS64_LDFLAGS, CONFSTR },
+ { "LFS64_LIBS", _CS_LFS64_LIBS, CONFSTR },
+ { "LFS64_LINTFLAGS", _CS_LFS64_LINTFLAGS, CONFSTR },
+
{ NULL, 0, SYSCONF }
};
diff --git a/posix/globtest.sh b/posix/globtest.sh
index 61fec9874c..48328af032 100755
--- a/posix/globtest.sh
+++ b/posix/globtest.sh
@@ -1,6 +1,8 @@
#! /bin/sh
common_objpfx=$1; shift
+elf_objpfx=$1; shift
+rtld_installed_name=$1; shift
# Create the arena
: ${TMPDIR=/tmp}
@@ -22,7 +24,7 @@ echo 1_2 > $testdir/dir1/file1_2
result=0
LD_LIBRARY_PATH=$common_objpfx \
-${common_objpfx}posix/globtest "$testdir" "*" |
+${elf_objpfx}${rtld_installed_name} ${common_objpfx}posix/globtest "$testdir" "*" |
sort > $testout
cat <<"EOF" | cmp - $testout || result=1
`dir1'
@@ -33,7 +35,7 @@ not NULL
EOF
LD_LIBRARY_PATH=$common_objpfx \
-${common_objpfx}posix/globtest "$testdir" "*/*" |
+${elf_objpfx}${rtld_installed_name} ${common_objpfx}posix/globtest "$testdir" "*/*" |
sort > $testout
cat <<"EOF" | cmp - $testout || result=1
`dir1/file1_1'
@@ -42,7 +44,7 @@ not NULL
EOF
LD_LIBRARY_PATH=$common_objpfx \
-${common_objpfx}posix/globtest "$testdir" "*/1" |
+${elf_objpfx}${rtld_installed_name} ${common_objpfx}posix/globtest "$testdir" "*/1" |
sort > $testout
cat <<"EOF" | cmp - $testout || result=1
GLOB_NOMATCH
@@ -50,7 +52,7 @@ NULL
EOF
LD_LIBRARY_PATH=$common_objpfx \
-${common_objpfx}posix/globtest "$testdir" "*/*1_1" |
+${elf_objpfx}${rtld_installed_name} ${common_objpfx}posix/globtest "$testdir" "*/*1_1" |
sort > $testout
cat <<"EOF" | cmp - $testout || result=1
`dir1/file1_1'
@@ -58,7 +60,7 @@ not NULL
EOF
LD_LIBRARY_PATH=$common_objpfx \
-${common_objpfx}posix/globtest "$testdir" "*/file1_1" |
+${elf_objpfx}${rtld_installed_name} ${common_objpfx}posix/globtest "$testdir" "*/file1_1" |
sort > $testout
cat <<"EOF" | cmp - $testout || result=1
`dir1/file1_1'
@@ -66,7 +68,7 @@ not NULL
EOF
LD_LIBRARY_PATH=$common_objpfx \
-${common_objpfx}posix/globtest "$testdir" "*-/*" |
+${elf_objpfx}${rtld_installed_name} ${common_objpfx}posix/globtest "$testdir" "*-/*" |
sort > $testout
cat <<"EOF" | cmp - $testout || result=1
GLOB_NOMATCH
@@ -74,7 +76,7 @@ NULL
EOF
LD_LIBRARY_PATH=$common_objpfx \
-${common_objpfx}posix/globtest "$testdir" "*-" |
+${elf_objpfx}${rtld_installed_name} ${common_objpfx}posix/globtest "$testdir" "*-" |
sort > $testout
cat <<"EOF" | cmp - $testout || result=1
GLOB_NOMATCH
diff --git a/posix/sys/types.h b/posix/sys/types.h
index 675e2522fa..ab28d39aaf 100644
--- a/posix/sys/types.h
+++ b/posix/sys/types.h
@@ -40,11 +40,19 @@ typedef __fsid_t fsid_t;
#endif
typedef __dev_t dev_t;
-typedef __ino_t ino_t;
typedef __mode_t mode_t;
typedef __nlink_t nlink_t;
typedef __loff_t loff_t;
+#ifndef __USE_FILE_OFFSET64
+typedef __ino_t ino_t;
+#else
+typedef __ino64_t ino_t;
+#endif
+#ifdef __USE_LARGEFILE64
+typedef __ino64_t ino64_t;
+#endif
+
#ifndef gid_t
typedef __gid_t gid_t;
# define gid_t gid_t
@@ -56,9 +64,17 @@ typedef __uid_t uid_t;
#endif
#ifndef off_t
+# ifndef __USE_FILE_OFFSET64
typedef __off_t off_t;
+# else
+typedef __off64_t off_t;
+# endif
# define off_t off_t
#endif
+#if defined __USE_LARGEFILE64 && !defined off64_t
+typedef __off64_t off64_t;
+# define off64_t off64_t
+#endif
#ifndef pid_t
typedef __pid_t pid_t;
@@ -156,6 +172,23 @@ typedef int register_t __attribute__ ((__mode__ (__word__)));
#endif /* Use BSD. */
+/* Types from the Large File Support interface. */
+#ifndef __USE_FILE_OFFSET64
+typedef __blkcnt_t blkcnt_t; /* Type to count number of disk blocks. */
+typedef __fsblkcnt_t fsblkcnt_t; /* Type to count file system blocks. */
+typedef __fsfilcnt_t fsfilcnt_t; /* Type to count file system inodes. */
+#else
+typedef __blkcnt64_t blkcnt_t; /* Type to count number of disk blocks. */
+typedef __fsblkcnt64_t fsblkcnt_t; /* Type to count file system blocks. */
+typedef __fsfilcnt64_t fsfilcnt_t; /* Type to count file system inodes. */
+#endif
+
+#ifdef __USE_LARGEFILE64
+typedef __blkcnt64_t blkcnt64_t; /* Type to count number of disk blocks. */
+typedef __fsblkcnt64_t fsblkcnt64_t; /* Type to count file system blocks. */
+typedef __fsfilcnt64_t fsfilcnt64_t; /* Type to count file system inodes. */
+#endif
+
__END_DECLS
#endif /* sys/types.h */
diff --git a/posix/sys/utsname.h b/posix/sys/utsname.h
index bebef5d456..629dd5902a 100644
--- a/posix/sys/utsname.h
+++ b/posix/sys/utsname.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1994, 1996 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1992, 1994, 1996, 1997 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -30,7 +30,7 @@ __BEGIN_DECLS
#include <bits/utsname.h>
#ifndef _UTSNAME_NODENAME_LENGTH
-#define _UTSNAME_NODENAME_LENGTH _UTSNAME_LENGTH
+# define _UTSNAME_NODENAME_LENGTH _UTSNAME_LENGTH
#endif
/* Structure describing the system and machine. */
@@ -52,16 +52,16 @@ struct utsname
#if _UTSNAME_DOMAIN_LENGTH - 0
/* Name of the domain of this node on the network. */
-#ifdef __USE_GNU
+# ifdef __USE_GNU
char domainname[_UTSNAME_DOMAIN_LENGTH];
-#else
+# else
char __domainname[_UTSNAME_DOMAIN_LENGTH];
-#endif
+# endif
#endif
};
#ifdef __USE_SVID
-#define SYS_NMLN _UTSNAME_LENGTH
+# define SYS_NMLN _UTSNAME_LENGTH
#endif
diff --git a/posix/sys/wait.h b/posix/sys/wait.h
index f573d778f7..9b5025ab83 100644
--- a/posix/sys/wait.h
+++ b/posix/sys/wait.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 92, 93, 94, 96 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 92, 93, 94, 96, 97 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -38,43 +38,37 @@ __BEGIN_DECLS
/* Lots of hair to allow traditional BSD use of `union wait'
as well as POSIX.1 use of `int' for the status word. */
-#ifdef __GNUC__
-#define __WAIT_INT(status) \
+# ifdef __GNUC__
+# define __WAIT_INT(status) \
(__extension__ ({ union { __typeof(status) __in; int __i; } __u; \
__u.__in = (status); __u.__i; }))
-#else
-#define __WAIT_INT(status) (*(int *) &(status))
-#endif
-
-/* This is the type of the argument to `wait'.
-
- NOTE: Since this functionality is volatile, I'm disabling the use of it for
- now.
-
-With GCC 2.6.1 and later, the funky union causes redeclarations with either
- `int *' or `union wait *' to be allowed without complaint.
- __WAIT_STATUS_DEFN is the type used in the actual function
- definitions. */
-
-#if (!defined (__GNUC__) || __GNUC__ < 2 || \
- /*(__GNUC__ == 2 && __GNUC_MINOR__ < 6)*/ 1)
-#define __WAIT_STATUS __ptr_t
-#define __WAIT_STATUS_DEFN __ptr_t
-#else
+# else
+# define __WAIT_INT(status) (*(int *) &(status))
+# endif
+
+/* This is the type of the argument to `wait'. The funky union
+ causes redeclarations with ether `int *' or `union wait *' to be
+ allowed without complaint. __WAIT_STATUS_DEFN is the type used in
+ the actual function definitions. */
+
+# if !defined __GNUC__ || __GNUC__ < 2
+# define __WAIT_STATUS __ptr_t
+# define __WAIT_STATUS_DEFN __ptr_t
+# else
/* This works in GCC 2.6.1 and later. */
typedef union
{
union wait *__uptr;
int *__iptr;
} __WAIT_STATUS __attribute__ ((transparent_union));
-#define __WAIT_STATUS_DEFN int *
+# define __WAIT_STATUS_DEFN int *
#endif
#else /* Don't use BSD. */
-#define __WAIT_INT(status) (status)
-#define __WAIT_STATUS int *
-#define __WAIT_STATUS_DEFN int *
+# define __WAIT_INT(status) (status)
+# define __WAIT_STATUS int *
+# define __WAIT_STATUS_DEFN int *
#endif /* Use BSD. */
@@ -89,10 +83,10 @@ typedef union
#define WIFSTOPPED(status) __WIFSTOPPED(__WAIT_INT(status))
#ifdef __USE_BSD
-#define WCOREFLAG __WCOREFLAG
-#define WCOREDUMP(status) __WCOREDUMP(__WAIT_INT(status))
-#define W_EXITCODE(ret, sig) __W_EXITCODE(ret, sig)
-#define W_STOPCODE(sig) __W_STOPCODE(sig)
+# define WCOREFLAG __WCOREFLAG
+# define WCOREDUMP(status) __WCOREDUMP(__WAIT_INT(status))
+# define W_EXITCODE(ret, sig) __W_EXITCODE(ret, sig)
+# define W_STOPCODE(sig) __W_STOPCODE(sig)
#endif
@@ -103,8 +97,8 @@ extern __pid_t wait __P ((__WAIT_STATUS __stat_loc));
#ifdef __USE_BSD
/* Special values for the PID argument to `waitpid' and `wait4'. */
-#define WAIT_ANY (-1) /* Any process. */
-#define WAIT_MYPGRP 0 /* Any process in my process group. */
+# define WAIT_ANY (-1) /* Any process. */
+# define WAIT_MYPGRP 0 /* Any process in my process group. */
#endif
/* Wait for a child matching PID to die.
@@ -124,7 +118,7 @@ extern __pid_t __waitpid __P ((__pid_t __pid, int *__stat_loc,
extern __pid_t waitpid __P ((__pid_t __pid, int *__stat_loc,
int __options));
-#if defined(__USE_BSD) || defined(__USE_XOPEN_EXTENDED)
+#if defined __USE_BSD || defined __USE_XOPEN_EXTENDED
/* This being here makes the prototypes valid whether or not
we have already included <sys/resource.h> to define `struct rusage'. */
struct rusage;
diff --git a/posix/unistd.h b/posix/unistd.h
index 9fcad90cb1..e44dcff84f 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -133,6 +133,11 @@ __BEGIN_DECLS
_POSIX_SYNC_IO Synchronous I/O may be performed.
_POSIX_ASYNC_IO Asynchronous I/O may be performed.
_POSIX_PRIO_IO Prioritized Asynchronous I/O may be performed.
+
+ Support for the Large File Support interface is not generally available.
+ If it is available the following constants are defined to one.
+ _LFS64_LARGEFILE Low-level I/O supports large files.
+ _LFS64_STDIO Standard I/O supports large files.
*/
#include <bits/posix_opt.h>
@@ -171,15 +176,23 @@ typedef __uid_t uid_t;
# endif
# ifndef off_t
+# ifndef __USE_FILE_OFFSET64
typedef __off_t off_t;
+# else
+typedef __off64_t off_t;
+# endif
# define off_t off_t
# endif
+# if defined __USE_LARGEFILE64 && !defined off64_t
+typedef __off64_t off64_t;
+# define off64_t off64_t
+# endif
# ifndef pid_t
typedef __pid_t pid_t;
# define pid_t pid_t
# endif
-#endif
+#endif /* Unix98 */
/* Values for the second argument to access.
These may be OR'd together. */
@@ -221,7 +234,15 @@ extern int euidaccess __P ((__const char *__name, int __type));
or the end of the file (if WHENCE is SEEK_END).
Return the new file position. */
extern __off_t __lseek __P ((int __fd, __off_t __offset, int __whence));
+#ifndef __USE_FILE_OFFSET64
extern __off_t lseek __P ((int __fd, __off_t __offset, int __whence));
+#else
+extern __off_t lseek __P ((int __fd, __off_t __offset, int __whence))
+ __asm__ ("lseek64");
+#endif
+#ifdef __USE_LARGEFILE64
+extern __off64_t lseek64 __P ((int __fd, __off64_t __offset, int __whence));
+#endif
/* Close the file descriptor FD. */
extern int __close __P ((int __fd));
@@ -240,13 +261,31 @@ extern ssize_t write __P ((int __fd, __const __ptr_t __buf, size_t __n));
/* Read NBYTES into BUF from FD at the given position OFFSET without
changing the file pointer. Return the number read, -1 for errors
or 0 for EOF. */
+# ifndef __USE_FILE_OFFSET64
extern ssize_t pread __P ((int __fd, __ptr_t __buf, size_t __nbytes,
__off_t __offset));
+# else
+extern ssize_t pread __P ((int __fd, __ptr_t __buf, size_t __nbytes,
+ __off_t __offset)) __asm__ ("pread64");
+# endif
+# ifdef __USE_LARGEFILE64
+extern ssize_t pread64 __P ((int __fd, __ptr_t __buf, size_t __nbytes,
+ __off64_t __offset));
+# endif
/* Write N bytes of BUF to FD at the given position OFFSET without
changing the file pointer. Return the number written, or -1. */
+# ifndef __USE_FILE_OFFSET64
extern ssize_t pwrite __P ((int __fd, __const __ptr_t __buf, size_t __n,
__off_t __offset));
+# else
+extern ssize_t pwrite __P ((int __fd, __const __ptr_t __buf, size_t __n,
+ __off_t __offset)) __asm__ ("pwrite64");
+# endif
+# ifdef __USE_LARGEFILE64
+extern ssize_t pwrite64 __P ((int __fd, __const __ptr_t __buf, size_t __n,
+ __off64_t __offset));
+# endif
#endif
@@ -489,18 +528,18 @@ extern __pid_t getpgid __P ((__pid_t __pid));
The default in GNU is to provide the System V function. The BSD
function is available under -D_BSD_SOURCE with -lbsd-compat. */
-#ifndef __FAVOR_BSD
+# ifndef __FAVOR_BSD
/* Set the process group ID of the calling process to its own PID.
This is exactly the same as `setpgid (0, 0)'. */
extern int setpgrp __P ((void));
-#else
+# else
/* Another name for `setpgid' (above). */
extern int setpgrp __P ((__pid_t __pid, __pid_t __pgrp));
-#endif /* Favor BSD. */
+# endif /* Favor BSD. */
#endif /* Use SVID or BSD. */
/* Create a new session with the calling process as its leader.
@@ -792,10 +831,26 @@ extern int getpagesize __P ((void));
/* Truncate FILE to LENGTH bytes. */
+#ifndef __USE_FILE_OFFSET64
extern int truncate __P ((__const char *__file, __off_t __length));
+#else
+extern int truncate __P ((__const char *__file, __off_t __length))
+ __asm__ ("truncate64");
+#endif
+#ifdef __USE_LARGEFILE64
+extern int truncate64 __P ((__const char *__file, __off64_t __length));
+#endif
/* Truncate the file FD is open on to LENGTH bytes. */
+#ifndef __USE_FILE_OFFSET64
extern int ftruncate __P ((int __fd, __off_t __length));
+#else
+extern int ftruncate __P ((int __fd, __off_t __length))
+ __asm__ ("ftruncate64");
+#endif
+#ifdef __USE_LARGEFILE64
+extern int ftruncate64 __P ((int __fd, __off64_t __length));
+#endif
/* Return the maximum number of file descriptors
@@ -855,7 +910,15 @@ extern long int syscall __P ((long int __sysno, ...));
# define F_TLOCK 2 /* Test and lock a region for exclusive use. */
# define F_TEST 3 /* Test a region for other processes locks. */
+# ifndef __USE_FILE_OFFSET64
extern int lockf __P ((int __fd, int __cmd, __off_t __len));
+# else
+extern int lockf __P ((int __fd, int __cmd, __off_t __len))
+ __asm__ ("lockf64");
+# endif
+# ifdef __USE_LARGEFILE64
+extern int lockf64 __P ((int __fd, int __cmd, __off64_t __len));
+# endif
#endif /* Use misc and F_LOCK not already defined. */
diff --git a/posix/wordexp.c b/posix/wordexp.c
index e89f30d628..651c67d552 100644
--- a/posix/wordexp.c
+++ b/posix/wordexp.c
@@ -46,11 +46,13 @@
/* Some forward declarations */
static int parse_dollars (char **word, size_t *word_length, size_t *max_length,
const char *words, size_t *offset, int flags,
- wordexp_t *pwordexp);
+ wordexp_t *pwordexp)
+ internal_function;
static int parse_backtick (char **word, size_t *word_length,
size_t *max_length, const char *words,
- size_t *offset, int flags, wordexp_t *pwordexp);
-static int eval_expr (char *expr, int *result);
+ size_t *offset, int flags, wordexp_t *pwordexp)
+ internal_function;
+static int eval_expr (char *expr, int *result) internal_function;
/* The w_*() functions manipulate word lists. */
@@ -138,6 +140,7 @@ w_addword (wordexp_t *pwordexp, char *word)
*/
static int
+internal_function
parse_backslash (char **word, size_t *word_length, size_t *max_length,
const char *words, size_t *offset)
{
@@ -166,6 +169,7 @@ parse_backslash (char **word, size_t *word_length, size_t *max_length,
}
static int
+internal_function
parse_qtd_backslash (char **word, size_t *word_length, size_t *max_length,
const char *words, size_t *offset)
{
@@ -208,6 +212,7 @@ parse_qtd_backslash (char **word, size_t *word_length, size_t *max_length,
}
static int
+internal_function
parse_tilde (char **word, size_t *word_length, size_t *max_length,
const char *words, size_t *offset, size_t wordc)
{
@@ -303,6 +308,7 @@ parse_tilde (char **word, size_t *word_length, size_t *max_length,
}
static int
+internal_function
parse_glob (char **word, size_t *word_length, size_t *max_length,
const char *words, size_t *offset, int flags,
wordexp_t *pwordexp, char *ifs)
@@ -431,6 +437,7 @@ parse_squote (char **word, size_t *word_length, size_t *max_length,
/* Functions to evaluate an arithmetic expression */
static int
+internal_function
eval_expr_val (char **expr, int *result)
{
int sgn = +1;
@@ -481,6 +488,7 @@ eval_expr_val (char **expr, int *result)
}
static int
+internal_function
eval_expr_multdiv (char **expr, int *result)
{
int arg;
@@ -517,6 +525,7 @@ eval_expr_multdiv (char **expr, int *result)
}
static int
+internal_function
eval_expr (char *expr, int *result)
{
int arg;
@@ -553,6 +562,7 @@ eval_expr (char *expr, int *result)
}
static int
+internal_function
parse_arith (char **word, size_t *word_length, size_t *max_length,
const char *words, size_t *offset, int flags, int bracket)
{
@@ -680,6 +690,7 @@ parse_arith (char **word, size_t *word_length, size_t *max_length,
/* Function to execute a command and retrieve the results */
/* pwordexp contains NULL if field-splitting is forbidden */
static int
+internal_function
exec_comm (char *comm, char **word, size_t *word_length, size_t *max_length,
int flags, wordexp_t *pwordexp)
{
@@ -858,6 +869,7 @@ parse_comm (char **word, size_t *word_length, size_t *max_length,
}
static int
+internal_function
parse_param (char **word, size_t *word_length, size_t *max_length,
const char *words, size_t *offset, int flags, wordexp_t *pwordexp)
{
@@ -1173,6 +1185,7 @@ no_space:
}
static int
+internal_function
parse_dollars (char **word, size_t *word_length, size_t *max_length,
const char *words, size_t *offset, int flags,
wordexp_t *pwordexp)
@@ -1281,6 +1294,7 @@ parse_backtick (char **word, size_t *word_length, size_t *max_length,
}
static int
+internal_function
parse_dquote (char **word, size_t *word_length, size_t *max_length,
const char *words, size_t *offset, int flags)
{