MCPcopy Index your code
hub / github.com/F-Stack/f-stack / trimdomain

Function trimdomain

tools/libutil/trimdomain.c:55–93  ·  view source on GitHub ↗

- * Trim the current domain name from fullhost, but only if the result * is less than or equal to hostsize in length. * * This function understands $DISPLAY type fullhosts. * * For example: * * trimdomain("abcde.my.domain", 5) -> "abcde" * trimdomain("abcde.my.domain", 4) -> "abcde.my.domain" * trimdomain("abcde.my.domain:0.0", 9) -> "abcde:0.0" * tri

Source from the content-addressed store, hash-verified

53 * trimdomain("abcde.my.domain:0.0", 8) -> "abcde.my.domain:0.0"
54 */
55void
56trimdomain(char *fullhost, int hostsize)
57{
58 static size_t dlen;
59 static int first = 1;
60 static char domain[MAXHOSTNAMELEN];
61 char *end, *s;
62 size_t len;
63
64 if (first) {
65 /* XXX: Should we assume that our domain is this persistent ? */
66 first = 0;
67 if (gethostname(domain, sizeof(domain) - 1) == 0 &&
68 (s = strchr(domain, '.')) != NULL)
69 memmove(domain, s + 1, strlen(s + 1) + 1);
70 else
71 domain[0] = '\0';
72 dlen = strlen(domain);
73 }
74
75 if (domain[0] == '\0')
76 return;
77
78 s = fullhost;
79 end = s + hostsize + 1;
80 if ((s = memchr(s, '.', (size_t)(end - s))) != NULL) {
81 if (strncasecmp(s + 1, domain, dlen) == 0) {
82 if (s[dlen + 1] == '\0') {
83 /* Found -- lose the domain. */
84 *s = '\0';
85 } else if (s[dlen + 1] == ':' &&
86 isDISP(s + dlen + 2) &&
87 (len = strlen(s + dlen + 1)) < (size_t)(end - s)) {
88 /* Found -- shuffle the DISPLAY back. */
89 memmove(s, s + dlen + 1, len + 1);
90 }
91 }
92 }
93}
94
95/*
96 * Is the given string NN or NN.NN where ``NN'' is an all-numeric string ?

Callers 7

realhostnameFunction · 0.85
realhostname_saFunction · 0.85
testitFunction · 0.85
testitFunction · 0.85
routenameFunction · 0.85
netname4Function · 0.85
inetnameFunction · 0.85

Calls 6

strchrFunction · 0.85
memchrFunction · 0.85
strncasecmpFunction · 0.85
isDISPFunction · 0.85
gethostnameFunction · 0.50
memmoveFunction · 0.50

Tested by 2

testitFunction · 0.68
testitFunction · 0.68