LibC/Shell: Implement gethostname() and shell uses it for hostname
This commit is contained in:
parent
edc30cd71d
commit
20d38ed28c
|
@ -119,6 +119,19 @@ int isatty(int fildes)
|
||||||
return syscall(SYS_ISATTY, fildes) >= 0;
|
return syscall(SYS_ISATTY, fildes) >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int gethostname(char* name, size_t namelen)
|
||||||
|
{
|
||||||
|
FILE* fp = fopen("/etc/hostname", "r");
|
||||||
|
if (fp == NULL)
|
||||||
|
return -1;
|
||||||
|
size_t nread = fread(name, namelen - 1, 1, fp);
|
||||||
|
while (nread > 0 && name[nread - 1] == '\n')
|
||||||
|
nread--;
|
||||||
|
name[nread] = '\0';
|
||||||
|
fclose(fp);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int execl(const char* pathname, const char* arg0, ...)
|
int execl(const char* pathname, const char* arg0, ...)
|
||||||
{
|
{
|
||||||
if (arg0 == nullptr)
|
if (arg0 == nullptr)
|
||||||
|
|
|
@ -915,21 +915,9 @@ int main(int argc, char** argv)
|
||||||
|
|
||||||
tcgetattr(0, &old_termios);
|
tcgetattr(0, &old_termios);
|
||||||
|
|
||||||
{
|
char hostname_buffer[HOST_NAME_MAX];
|
||||||
FILE* fp = fopen("/etc/hostname", "r");
|
if (gethostname(hostname_buffer, sizeof(hostname_buffer)) == 0) {
|
||||||
if (fp != NULL)
|
MUST(hostname.append(hostname_buffer));
|
||||||
{
|
|
||||||
char buffer[512];
|
|
||||||
while (size_t nbyte = fread(buffer, 1, sizeof(buffer), fp))
|
|
||||||
{
|
|
||||||
if (nbyte == 0)
|
|
||||||
break;
|
|
||||||
MUST(hostname.append(BAN::StringView(buffer, nbyte)));
|
|
||||||
}
|
|
||||||
fclose(fp);
|
|
||||||
}
|
|
||||||
if (!hostname.empty() && hostname.back() == '\n')
|
|
||||||
hostname.pop_back();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (argc >= 2)
|
if (argc >= 2)
|
||||||
|
|
Loading…
Reference in New Issue