can cause buffer overflow*/
char *map_subst(SUBSTMAP map,int uc);
-int check_charset(char **filename,const char *charset);
+void check_charset(char **filename,const char *charset);
int process_file(FILE *f,long stop);
void copy_out(FILE *f, char *header);
void output_paragraph(unsigned short int *buffer) ;
if (!strncmp(codeset,"646",3)) {
/* ISO 646 is another name for us=ascii */
check_charset(&dest_csname,"us-ascii") ;
- } else {
- if (check_charset(&dest_csname,codeset)) {
- locale_charset = dest_csname;
- }
+ } else {
+ check_charset(&dest_csname,codeset);
+ locale_charset = dest_csname;
}
} else if (!strcmp(codeset,"ANSI_X3.4-1968")) {
check_charset(&dest_csname,"us-ascii");
newstr = malloc(strlen(codeset)-4+2+1);
strcpy(newstr,"cp");
strcpy(newstr+2,codeset+4);
- if (check_charset(&dest_csname,newstr)) {
- locale_charset = dest_csname;
- }
+ check_charset(&dest_csname,newstr);
+ locale_charset = dest_csname;
free(newstr);
} else if (!strncmp(codeset,"IBM",3)) {
char *newstr;
newstr=malloc(strlen(codeset)+2+1);
strcpy(newstr,"cp");
strcpy(newstr+2,codeset);
- if (check_charset(&dest_csname, newstr)) {
- locale_charset=dest_csname;
- }
+ check_charset(&dest_csname, newstr);
+ locale_charset=dest_csname;
free(newstr);
} else {
char *i,*newstr = strdup(codeset);
for (i=newstr;*i;i++) {
*i=tolower(*i);
}
- if (check_charset(&dest_csname,newstr)) {
- locale_charset = dest_csname;
- }
+ check_charset(&dest_csname,newstr);
+ locale_charset = dest_csname;
+
}
}
/************************************************************************/
/* Searches for charset with given name and put pointer to malloced copy*/
/* of its name into first arg if found. Otherwise leaves first arg */
-/* unchanged. Returns non-zero on success */
+/* unchanged. Terminatnes program if charset not found */
/************************************************************************/
-int check_charset(char **filename,const char *charset) {
+void check_charset(char **filename,const char *charset) {
char *tmppath;
if (charset == NULL ) {
- return 0;
+ exit(1);
}
if (!strncmp(charset,"utf-8",6)) {
*filename=strdup("utf-8");
- return 1;
+ return;
}
tmppath=find_file(stradd(charset,CHARSET_EXT),charset_path);
if (tmppath && *tmppath) {
*filename=strdup(charset);
free(tmppath);
- return 1;
+ return;
}
- return 0;
+ fprintf(stderr, "charset %s not found\n", charset);
+ exit(1);
}
/**********************************************************************/