namegen.c
changeset 5108 aeaef6fe53b7
parent 4919 9a5b9becf31e
child 5380 8ea58542b6e0
equal deleted inserted replaced
5107:f3cddd9ce5f4 5108:aeaef6fe53b7
   478 		CzechPattern pattern = name_czech_adj[prefix].pattern;
   478 		CzechPattern pattern = name_czech_adj[prefix].pattern;
   479 		size_t endpos;
   479 		size_t endpos;
   480 
   480 
   481 		strecat(buf, name_czech_adj[prefix].name, last);
   481 		strecat(buf, name_czech_adj[prefix].name, last);
   482 		endpos = strlen(buf) - 1;
   482 		endpos = strlen(buf) - 1;
       
   483 		/* Find the first character in a UTF-8 sequence */
       
   484 		while (GB(buf[endpos], 6, 2) == 2) endpos--;
   483 		if (gender == CZG_SMASC && pattern == CZP_PRIVL) {
   485 		if (gender == CZG_SMASC && pattern == CZP_PRIVL) {
   484 			/* -ovX -> -uv */
   486 			/* -ovX -> -uv */
   485 			buf[endpos - 2] = 'u';
   487 			buf[endpos - 2] = 'u';
   486 			assert(buf[endpos - 1] == 'v');
   488 			assert(buf[endpos - 1] == 'v');
   487 			buf[endpos] = '\0';
   489 			buf[endpos] = '\0';
   488 		} else {
   490 		} else {
   489 			buf[endpos] = name_czech_patmod[gender][pattern];
   491 			strecpy(buf + endpos, name_czech_patmod[gender][pattern], last);
   490 		}
   492 		}
   491 
   493 
   492 		strecat(buf, " ", last);
   494 		strecat(buf, " ", last);
   493 	}
   495 	}
   494 
   496