#include #include #include #include static char oldname[256]; static char newname[256]; #define cisalpha(c) isalpha((unsigned char)(c)) #define cisupper(c) isupper((unsigned char)(c)) #define cislower(c) islower((unsigned char)(c)) #define ctoupper(c) toupper((unsigned char)(c)) int main(void); int main(void) { char *to; char *cp; int isfirst; gethostname(oldname,sizeof(oldname)); oldname[sizeof(oldname)-1] = '\0'; cp = index(oldname,'.'); if (cp) *cp = '\0'; to = newname; cp = oldname; isfirst = 1; while (*cp) { if (isascii(*cp) && cisalpha(*cp)) { if (cisupper(*cp)) { to = newname; cp = oldname; while (*cp) *to++ = *cp++; break; } if (! isfirst) { *to++ = *cp++; } else { *to++ = cislower(*cp) ? ctoupper(*cp) : *cp; cp ++; } isfirst = 0; } else { *to++ = *cp++; isfirst = 1; } } *to++ = '\0'; printf("%s\n",newname); return(0); }