summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/libcruft/getusershell.c
diff options
context:
space:
mode:
authorGwenolé Beauchesne <gbeauchesne@mandriva.org>2003-02-18 16:48:11 +0000
committerGwenolé Beauchesne <gbeauchesne@mandriva.org>2003-02-18 16:48:11 +0000
commit8182e7cfe7d9c60567e48b876282594395062530 (patch)
treebb743948c6e926539b030102b804b5708222e8d4 /mdk-stage1/dietlibc/libcruft/getusershell.c
parentc93f95560d3fde9eaefcc62c454c67b8b5626fa7 (diff)
downloaddrakx-backup-do-not-use-8182e7cfe7d9c60567e48b876282594395062530.tar
drakx-backup-do-not-use-8182e7cfe7d9c60567e48b876282594395062530.tar.gz
drakx-backup-do-not-use-8182e7cfe7d9c60567e48b876282594395062530.tar.bz2
drakx-backup-do-not-use-8182e7cfe7d9c60567e48b876282594395062530.tar.xz
drakx-backup-do-not-use-8182e7cfe7d9c60567e48b876282594395062530.zip
Merge in CVS dietlibc 0.21 for IA-64 and X86-64 support. However, drop the
following architectures we currently don't support: arm, mips, mipsel, parisc, s390, sparc64.
Diffstat (limited to 'mdk-stage1/dietlibc/libcruft/getusershell.c')
-rw-r--r--mdk-stage1/dietlibc/libcruft/getusershell.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/libcruft/getusershell.c b/mdk-stage1/dietlibc/libcruft/getusershell.c
new file mode 100644
index 000000000..4c99aa4d4
--- /dev/null
+++ b/mdk-stage1/dietlibc/libcruft/getusershell.c
@@ -0,0 +1,33 @@
+#define _BSD_SOURCE
+#include <unistd.h>
+#include <paths.h>
+#include <string.h>
+#include "parselib.h"
+
+static struct state __ps;
+
+void setusershell(void) {
+ __prepare_parse(_PATH_SHELLS,&__ps);
+}
+
+void endusershell(void) {
+ __end_parse(&__ps);
+}
+
+#define MAXSHELL 128
+
+char *getusershell(void) {
+ static char line[MAXSHELL+1];
+ size_t i;
+ if (!__ps.buffirst) setusershell();
+ if (!__ps.buffirst) goto error;
+ if (__ps.cur>=__ps.buflen) goto error;
+ i=__parse_1(&__ps,'\n');
+ if (i>=MAXSHELL) i=MAXSHELL-1;
+ memcpy(line,__ps.buffirst+__ps.cur,i);
+ line[i]=0;
+ __ps.cur+=i+1;
+ return line;
+error:
+ return 0;
+}