Last change
on this file since 445 was 444, checked in by coas-nagasima, 4 years ago |
muslのソースコードを追加
|
-
Property svn:eol-style
set to
native
-
Property svn:mime-type
set to
text/x-csrc;charset=UTF-8
|
File size:
565 bytes
|
Line | |
---|
1 | #define _GNU_SOURCE
|
---|
2 | #include <stdio.h>
|
---|
3 | #include <unistd.h>
|
---|
4 |
|
---|
5 | static const char defshells[] = "/bin/sh\n/bin/csh\n";
|
---|
6 |
|
---|
7 | static char *line;
|
---|
8 | static size_t linesize;
|
---|
9 | static FILE *f;
|
---|
10 |
|
---|
11 | void endusershell(void)
|
---|
12 | {
|
---|
13 | if (f) fclose(f);
|
---|
14 | f = 0;
|
---|
15 | }
|
---|
16 |
|
---|
17 | void setusershell(void)
|
---|
18 | {
|
---|
19 | if (!f) f = fopen("/etc/shells", "rbe");
|
---|
20 | if (!f) f = fmemopen((void *)defshells, sizeof defshells - 1, "rb");
|
---|
21 | }
|
---|
22 |
|
---|
23 | char *getusershell(void)
|
---|
24 | {
|
---|
25 | ssize_t l;
|
---|
26 | if (!f) setusershell();
|
---|
27 | if (!f) return 0;
|
---|
28 | l = getline(&line, &linesize, f);
|
---|
29 | if (l <= 0) return 0;
|
---|
30 | if (line[l-1]=='\n') line[l-1]=0;
|
---|
31 | return line;
|
---|
32 | }
|
---|
Note:
See
TracBrowser
for help on using the repository browser.