mirror of https://git.musl-libc.org/git/musl
Browse Source
I actually wrote these a month ago but forgot to integrate them. ugly, probably-harmful-to-use functions, but some legacy apps want them...rs-1.0
2 changed files with 36 additions and 0 deletions
@ -0,0 +1,33 @@ |
|||
#define _GNU_SOURCE |
|||
#include <stdio.h> |
|||
#include <string.h> |
|||
#include <stdlib.h> |
|||
|
|||
static const char defshells[] = "/bin/sh\n/bin/csh\n"; |
|||
|
|||
static char *line; |
|||
size_t linesize; |
|||
static FILE *f; |
|||
|
|||
void endusershell(void) |
|||
{ |
|||
if (f) fclose(f); |
|||
f = 0; |
|||
} |
|||
|
|||
void setusershell(void) |
|||
{ |
|||
if (!f) f = fopen("/etc/shells", "rb"); |
|||
if (!f) f = fmemopen((void *)defshells, sizeof defshells - 1, "rb"); |
|||
} |
|||
|
|||
char *getusershell(void) |
|||
{ |
|||
ssize_t l; |
|||
if (!f) setusershell(); |
|||
if (!f) return 0; |
|||
l = getline(&line, &linesize, f); |
|||
if (l <= 0) return 0; |
|||
if (line[l-1]=='\n') line[l-1]=0; |
|||
return line; |
|||
} |
|||
Loading…
Reference in new issue