add setdomainname syscall, fix getdomainname (previously a stub)

This commit is contained in:
Rich Felker 2012-09-09 16:50:20 -04:00
parent a660180c6a
commit c87584a3e9
3 changed files with 18 additions and 1 deletions

View File

@ -165,6 +165,7 @@ int getpagesize(void);
int getdtablesize(void); int getdtablesize(void);
int sethostname(const char *, size_t); int sethostname(const char *, size_t);
int getdomainname(char *, size_t); int getdomainname(char *, size_t);
int setdomainname(const char *, size_t);
int setgroups(size_t, const gid_t []); int setgroups(size_t, const gid_t []);
char *getpass(const char *); char *getpass(const char *);
int daemon(int, int); int daemon(int, int);

View File

@ -1,9 +1,17 @@
#define _GNU_SOURCE
#include <unistd.h> #include <unistd.h>
#include <sys/utsname.h> #include <sys/utsname.h>
#include <string.h> #include <string.h>
#include <errno.h>
int getdomainname(char *name, size_t len) int getdomainname(char *name, size_t len)
{ {
*name = 0; struct utsname temp;
uname(&temp);
if (!len || strlen(temp.domainname) >= len) {
errno = EINVAL;
return -1;
}
strcpy(name, temp.domainname);
return 0; return 0;
} }

8
src/misc/setdomainname.c Normal file
View File

@ -0,0 +1,8 @@
#define _GNU_SOURCE
#include <unistd.h>
#include "syscall.h"
int setdomainname(const char *name, size_t len)
{
return syscall(SYS_setdomainname, name, len);
}