/* @(#)getdomainname.c 1.16 03/06/15 Copyright 1995-2003 J. Schilling */ #ifndef lint static char sccsid[] = "@(#)getdomainname.c 1.16 03/06/15 Copyright 1995-2003 J. Schilling"; #endif /* * Copyright (c) 1995-2003 J. Schilling */ /* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * this program; see the file COPYING. If not, write to the Free Software * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #include #include #include #ifdef HAVE_SYS_SYSTEMINFO_H #include #endif #include #ifndef HAVE_GETDOMAINNAME EXPORT int getdomainname __PR((char *name, int namelen)); #endif /*#undef HAVE_GETDOMAINNAME*/ /*#undef SI_SRPC_DOMAIN*/ #if !defined(HAVE_GETDOMAINNAME) && defined(SI_SRPC_DOMAIN) #define FUNC_GETDOMAINNAME EXPORT int getdomainname(name, namelen) char *name; int namelen; { if (sysinfo(SI_SRPC_DOMAIN, name, namelen) < 0) return (-1); return (0); } #endif #if !defined(HAVE_GETDOMAINNAME) && !defined(FUNC_GETDOMAINNAME) #define FUNC_GETDOMAINNAME #include #include #include EXPORT int getdomainname(name, namelen) char *name; int namelen; { FILE *f; char name1[1024]; char *p; char *p2; name[0] = '\0'; f = fileopen("/etc/resolv.conf", "r"); if (f == NULL) return (-1); while (fgetline(f, name1, sizeof (name1)) >= 0) { if ((p = strchr(name1, '#')) != NULL) *p = '\0'; /* * Skip leading whitespace. */ p = name1; while (*p != '\0' && (*p == ' ' || *p == '\t')) p++; if (strncmp(p, "domain", 6) == 0) { p += 6; while (*p != '\0' && (*p == ' ' || *p == '\t')) p++; if ((p2 = strchr(p, ' ')) != NULL) *p2 = '\0'; if ((p2 = strchr(p, '\t')) != NULL) *p2 = '\0'; strncpy(name, p, namelen); fclose(f); return (0); } } fclose(f); return (0); } #endif