6 * Copyright (C) 1987 by the Massachusetts Institute of Technology
7 * For copying and distribution information, please see the file
12 static char *rcsid_fixname_c = "$Header$";
15 #include <mit-copyright.h>
22 void FixName(char *ilnm, char *ifnm, char *last, char *first, char *middle)
24 int ends_jr = 0, ends_iii = 0, ends_iv = 0, ends_ii = 0, ends_v = 0;
31 TrimTrailingSpace(ilnm);
32 LookForJrAndIII(ilnm, &ends_jr, &ends_ii, &ends_iii, &ends_iv, &ends_v);
36 strncpy(last, ilnm, LAST_LEN);
38 /* First name & middle initial ... */
40 TrimTrailingSpace(ifnm);
41 LookForJrAndIII(ifnm, &ends_jr, &ends_ii, &ends_iii, &ends_iv, &ends_v);
43 GetMidInit(ifnm, middle);
47 /* okay, finish up first name */
48 AppendJrOrIII(ifnm, &ends_jr, &ends_ii, &ends_iii, &ends_iv, &ends_v);
50 strncpy(first, ifnm, FIRST_LEN);
53 FixCase(register char *p)
55 register int cflag; /* convert to lcase, unless at start or following */
56 /* a space or punctuation mark (e.g., '-') */
58 for (cflag = 0; *p; p++)
60 if (cflag && isupper(*p))
62 else if (!cflag && islower(*p))
71 LookForJrAndIII(register char *nm, register int *pends_jr, int *pends_ii,
72 register int *pends_iii, register int *pends_iv,
75 register int len = strlen(nm);
77 if (len >= 4 && !strcmp(nm + len - 3, " JR"))
82 else if (len >= 4 && !strcmp(nm + len - 3, " IV"))
87 else if (len >= 5 && !strcmp(nm + len - 4, " JR."))
92 else if (len >= 5 && !strcmp(nm + len - 4, " III"))
97 else if (len >= 4 && !strcmp(nm + len - 3, " II"))
102 else if (len >= 3 && !strcmp(nm + len - 2, " V"))
109 LookForSt(register char *nm) /* ST PIERRE, etc. */
113 if (!strcmp(nm, "ST "))
115 strcpy(temp, nm + 3);
121 LookForO(register char *nm) /* O BRIEN, etc. */
123 if (!strcmp(nm, "O ") && isalpha(nm[2]))
127 TrimTrailingSpace(register char *ip)
130 for (p = ip + strlen(ip) - 1; p >= ip && isspace(*p); p--)
134 GetMidInit(register char *nm, register char *mi)
136 while (*nm && !isspace(*nm))
140 while (*nm && isspace(*nm))