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(ilnm, ifnm, last, first, middle)
24 char *first, *last, *middle;
26 int ends_jr=0, ends_iii=0, ends_iv=0, ends_ii=0, ends_v=0;
33 TrimTrailingSpace(ilnm);
34 LookForJrAndIII(ilnm, &ends_jr, &ends_ii, &ends_iii, &ends_iv, &ends_v);
38 strncpy(last, ilnm, LAST_LEN);
40 /* First name & middle initial ... */
42 TrimTrailingSpace(ifnm);
43 LookForJrAndIII(ifnm, &ends_jr, &ends_ii, &ends_iii, &ends_iv, &ends_v);
45 GetMidInit(ifnm, middle);
49 /* okay, finish up first name */
50 AppendJrOrIII(ifnm, &ends_jr, &ends_ii, &ends_iii, &ends_iv, &ends_v);
52 strncpy(first, ifnm, FIRST_LEN);
58 register int cflag; /* convert to lcase, unless at start or following */
59 /* a space or punctuation mark (e.g., '-') */
61 for (cflag = 0; *p; p++) {
62 if (cflag && isupper(*p))
64 else if (!cflag && islower(*p))
73 LookForJrAndIII(nm, pends_jr, pends_ii, pends_iii, pends_iv, pends_v)
75 register int *pends_jr;
77 register int *pends_iii;
78 register int *pends_iv;
81 register int len = strlen(nm);
83 if (len >= 4 && !strcmp(nm + len - 3, " JR")) {
87 else if (len >= 4 && !strcmp(nm + len - 3, " IV")) {
91 else if (len >= 5 && !strcmp(nm + len - 4, " JR.")) {
95 else if (len >= 5 && !strcmp(nm + len - 4, " III")) {
99 else if (len >= 4 && !strcmp(nm + len - 3, " II")) {
103 else if (len >= 3 && !strcmp(nm + len - 2, " V")) {
109 LookForSt(nm) /* ST PIERRE, etc. */
114 if (!strcmp(nm,"ST ")) {
115 strcpy(temp, nm + 3);
121 LookForO(nm) /* O BRIEN, etc. */
124 if (!strcmp(nm, "O ") && isalpha(nm[2])) {
129 TrimTrailingSpace(ip)
133 for (p = ip + strlen(ip) - 1; p >= ip && isspace(*p); p--) {
143 for ( ; c= *cp; cp++)
144 if (islower(c)) *cp = toupper(c);
148 register char *nm; /* truncate at first space, if any such */
149 register char *mi; /* set to first char after first space, if any such */
151 while (*nm && !isspace(*nm)) {
157 while (*nm && isspace(*nm)) {