*** auxtext.c.orig Thu Jan 14 23:20:56 1999 --- auxtext.c Thu Jan 14 23:20:56 1999 *************** *** 741,744 **** --- 741,747 ---- InvalidateTextCache(text_ptr); + if (PRTGIF) { + RecalcTextMetrics(text_ptr, ObjPtr->x, text_ptr->baseline_y); + } if (curChoice == DRAWTEXT && textCursorShown && ObjPtr == curTextObj) { if (RestoreEditTextSize(ObjPtr, TRUE)) { *************** *** 1454,1459 **** struct TextRec *text_ptr=ObjPtr->detail.t; ! if (!PRTGIF && (ObjPtr->ctm != NULL || zoomScale != 0 || ! text_ptr->read_only)) { return TRUE; } --- 1457,1461 ---- struct TextRec *text_ptr=ObjPtr->detail.t; ! if (ObjPtr->ctm != NULL || zoomScale != 0 || text_ptr->read_only) { return TRUE; } *** file.c.orig Thu Jan 14 23:20:57 1999 --- file.c Thu Jan 14 23:20:57 1999 *************** *** 608,611 **** --- 608,725 ---- } + int FileNameHasExtension(file_name, file_type, pn_no_name) + char *file_name; + int file_type, *pn_no_name; + { + static char stszObjFileExt[20]; + static char stszSymFileExt[20]; + static char stszPinFileExt[20]; + static int initialized=FALSE; + char *psz=NULL; + + if (!initialized) { + sprintf(stszObjFileExt, ".%s", OBJ_FILE_EXT); + sprintf(stszSymFileExt, ".%s", SYM_FILE_EXT); + sprintf(stszPinFileExt, ".%s", PIN_FILE_EXT); + initialized = TRUE; + } + switch (file_type) { + case OBJ_FILE_TYPE: + if ((psz=strstr(file_name, ".obj")) != NULL && + strcmp(psz, ".obj") == 0) { + if (pn_no_name != NULL) *pn_no_name == (psz == file_name); + return TRUE; + } else if ((psz=strstr(file_name, ".tgo")) != NULL && + strcmp(psz, ".tgo") == 0) { + if (pn_no_name != NULL) *pn_no_name == (psz == file_name); + return TRUE; + } else if ((psz=strstr(file_name, stszObjFileExt)) != NULL && + strcmp(psz, stszObjFileExt) == 0) { + if (pn_no_name != NULL) *pn_no_name == (psz == file_name); + return TRUE; + } + break; + case SYM_FILE_TYPE: + if ((psz=strstr(file_name, ".sym")) != NULL && + strcmp(psz, ".sym") == 0) { + if (pn_no_name != NULL) *pn_no_name == (psz == file_name); + return TRUE; + } else if ((psz=strstr(file_name, ".tgs")) != NULL && + strcmp(psz, ".tgs") == 0) { + if (pn_no_name != NULL) *pn_no_name == (psz == file_name); + return TRUE; + } else if ((psz=strstr(file_name, stszSymFileExt)) != NULL && + strcmp(psz, stszSymFileExt) == 0) { + if (pn_no_name != NULL) *pn_no_name == (psz == file_name); + return TRUE; + } + break; + case PIN_FILE_TYPE: + if ((psz=strstr(file_name, ".pin")) != NULL && + strcmp(psz, ".pin") == 0) { + if (pn_no_name != NULL) *pn_no_name == (psz == file_name); + return TRUE; + } else if ((psz=strstr(file_name, ".tgp")) != NULL && + strcmp(psz, ".tgp") == 0) { + if (pn_no_name != NULL) *pn_no_name == (psz == file_name); + return TRUE; + } else if ((psz=strstr(file_name, stszPinFileExt)) != NULL && + strcmp(psz, stszPinFileExt) == 0) { + if (pn_no_name != NULL) *pn_no_name == (psz == file_name); + return TRUE; + } + break; + } + if (pn_no_name != NULL) *pn_no_name == (*file_name == '\0'); + + return FALSE; + } + + void RemoveFileNameExtension(file_name) + char *file_name; + { + static char stszObjFileExt[20]; + static char stszSymFileExt[20]; + static char stszPinFileExt[20]; + static int initialized=FALSE; + char *psz=NULL; + int len=strlen(file_name); + + if (!initialized) { + sprintf(stszObjFileExt, ".%s", OBJ_FILE_EXT); + sprintf(stszSymFileExt, ".%s", SYM_FILE_EXT); + sprintf(stszPinFileExt, ".%s", PIN_FILE_EXT); + initialized = TRUE; + } + if ((psz=strstr(file_name, ".obj")) != NULL && + strcmp(psz, ".obj") == 0) { + file_name[len-strlen(".obj")] = '\0'; + } else if ((psz=strstr(file_name, ".tgo")) != NULL && + strcmp(psz, ".tgo") == 0) { + file_name[len-strlen(".tgo")] = '\0'; + } else if ((psz=strstr(file_name, stszObjFileExt)) != NULL && + strcmp(psz, stszObjFileExt) == 0) { + file_name[len-strlen(stszObjFileExt)] = '\0'; + } else if ((psz=strstr(file_name, ".sym")) != NULL && + strcmp(psz, ".sym") == 0) { + file_name[len-strlen(".sym")] = '\0'; + } else if ((psz=strstr(file_name, ".tgs")) != NULL && + strcmp(psz, ".tgs") == 0) { + file_name[len-strlen(".tgs")] = '\0'; + } else if ((psz=strstr(file_name, stszSymFileExt)) != NULL && + strcmp(psz, stszSymFileExt) == 0) { + file_name[len-strlen(stszSymFileExt)] = '\0'; + } else if ((psz=strstr(file_name, ".pin")) != NULL && + strcmp(psz, ".pin") == 0) { + file_name[len-strlen(".pin")] = '\0'; + } else if ((psz=strstr(file_name, ".tgp")) != NULL && + strcmp(psz, ".tgp") == 0) { + file_name[len-strlen(".tgp")] = '\0'; + } else if ((psz=strstr(file_name, stszPinFileExt)) != NULL && + strcmp(psz, stszPinFileExt) == 0) { + file_name[len-strlen(stszPinFileExt)] = '\0'; + } + } + void Save(FP, BotObjPtr, Level, PageNumber) FILE *FP; *************** *** 895,899 **** char obj_ext_str[MAXSTRING+1], sym_ext_str[MAXSTRING+1]; char pin_ext_str[MAXSTRING+1]; ! int saved_cur_file_defined=FALSE, obj_ext_len, sym_ext_len, pin_ext_len; FILE *fp=NULL; int count=0, len, short_name, ok=TRUE; --- 1009,1013 ---- char obj_ext_str[MAXSTRING+1], sym_ext_str[MAXSTRING+1]; char pin_ext_str[MAXSTRING+1]; ! int saved_cur_file_defined=FALSE, no_name=FALSE; FILE *fp=NULL; int count=0, len, short_name, ok=TRUE; *************** *** 951,961 **** curPage = saved_cur_page; } - sprintf(obj_ext_str, ".%s", OBJ_FILE_EXT); sprintf(sym_ext_str, ".%s", SYM_FILE_EXT); sprintf(pin_ext_str, ".%s", PIN_FILE_EXT); - obj_ext_len = strlen(obj_ext_str); - sym_ext_len = strlen(sym_ext_str); - pin_ext_len = strlen(pin_ext_str); if (count > 2) { --- 1065,1071 ---- *************** *** 971,991 **** switch (count) { case 0: ! if (len >= obj_ext_len || len >= sym_ext_len || len >= pin_ext_len) { ! if (strcmp(&new_file_name[len-sym_ext_len], sym_ext_str) == 0) { ! MsgBox("Cannot save as a symbol file.\n\nNo symbol defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (strcmp(&new_file_name[len-pin_ext_len], pin_ext_str) == 0) { ! MsgBox("Cannot save as a pin file.\n\nNo symbol defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (strcmp(&new_file_name[len-obj_ext_len], obj_ext_str) != 0) { ! strcat(new_file_name, obj_ext_str); ! } ! if (strlen(new_file_name) == obj_ext_len) { ! MsgBox("No file name specified.\n\nFile not saved.", ! TOOL_NAME, INFO_MB); ! return; ! } } else { strcat(new_file_name, obj_ext_str); --- 1081,1094 ---- switch (count) { case 0: ! if (FileNameHasExtension(new_file_name, OBJ_FILE_TYPE, &no_name)) { ! /* don't modify */ ! } else if (FileNameHasExtension(new_file_name, SYM_FILE_TYPE, &no_name)) { ! MsgBox("Cannot save as a symbol file.\n\nNo symbol defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (FileNameHasExtension(new_file_name, PIN_FILE_TYPE, &no_name)) { ! MsgBox("Cannot save as a pin file.\n\nNo symbol defined.", ! TOOL_NAME, INFO_MB); ! return; } else { strcat(new_file_name, obj_ext_str); *************** *** 995,1018 **** if ((attr_ptr=FindAttrWithName(obj_ptr1, "type=", NULL)) != NULL && strcmp(attr_ptr->attr_value.s, "tgif_pin") == 0) { ! if (len >= obj_ext_len || len >= sym_ext_len || len >= pin_ext_len) { ! if (strcmp(&new_file_name[len-obj_ext_len], obj_ext_str) == 0) { ! MsgBox("Cannot save as an object file; one symbol defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (strcmp(&new_file_name[len-sym_ext_len], ! sym_ext_str) == 0) { ! sprintf(gszMsgBox, "%s.\n\n%s.", ! "Cannot save as a symbol file", ! "Please save the file as a pin file"); ! MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); ! return; ! } else if (strcmp(&new_file_name[len-pin_ext_len],pin_ext_str)!=0) { ! strcat(new_file_name, pin_ext_str); ! } ! if (strlen(new_file_name) == pin_ext_len) { ! MsgBox("No file name specified.\n\nFile not saved.", ! TOOL_NAME, INFO_MB); ! return; ! } } else { strcat(new_file_name, pin_ext_str); --- 1098,1115 ---- if ((attr_ptr=FindAttrWithName(obj_ptr1, "type=", NULL)) != NULL && strcmp(attr_ptr->attr_value.s, "tgif_pin") == 0) { ! if (FileNameHasExtension(new_file_name, OBJ_FILE_TYPE, &no_name)) { ! MsgBox("Cannot save as an object file; one symbol defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (FileNameHasExtension(new_file_name, SYM_FILE_TYPE, ! &no_name)) { ! sprintf(gszMsgBox, "%s.\n\n%s.", ! "Cannot save as a symbol file", ! "Please save the file as a pin file"); ! MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); ! return; ! } else if (FileNameHasExtension(new_file_name, PIN_FILE_TYPE, ! &no_name)) { ! /* don't modify */ } else { strcat(new_file_name, pin_ext_str); *************** *** 1019,1040 **** } } else { ! if (len >= obj_ext_len || len >= sym_ext_len || len >= pin_ext_len) { ! if (strcmp(&new_file_name[len-obj_ext_len], obj_ext_str) == 0) { ! MsgBox("Cannot save as an object file; one symbol defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (strcmp(&new_file_name[len-pin_ext_len], ! pin_ext_str) == 0) { ! MsgBox("Cannot save as a pin file; only one symbol is defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (strcmp(&new_file_name[len-sym_ext_len],sym_ext_str)!=0) { ! strcat(new_file_name, sym_ext_str); ! } ! if (strlen(new_file_name) == sym_ext_len) { ! MsgBox("No file name specified.\n\nFile not saved.", ! TOOL_NAME, INFO_MB); ! return; ! } } else { strcat(new_file_name, sym_ext_str); --- 1116,1131 ---- } } else { ! if (FileNameHasExtension(new_file_name, OBJ_FILE_TYPE, &no_name)) { ! MsgBox("Cannot save as an object file; one symbol defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (FileNameHasExtension(new_file_name, SYM_FILE_TYPE, ! &no_name)) { ! /* don't modify */ ! } else if (FileNameHasExtension(new_file_name, PIN_FILE_TYPE, ! &no_name)) { ! MsgBox("Cannot save as a pin file; only one symbol is defined.", ! TOOL_NAME, INFO_MB); ! return; } else { strcat(new_file_name, sym_ext_str); *************** *** 1043,1063 **** break; case 2: ! if (len >= obj_ext_len || len >= sym_ext_len || len >= pin_ext_len) { ! if (strcmp(&new_file_name[len-obj_ext_len], obj_ext_str) == 0) { ! MsgBox("Cannot save as an object file; two symbols defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (strcmp(&new_file_name[len-sym_ext_len], sym_ext_str) == 0) { ! MsgBox("Cannot save as a symbol file; two symbols defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (strcmp(&new_file_name[len-pin_ext_len],pin_ext_str)!=0) { ! strcat(new_file_name, pin_ext_str); ! } ! if (strlen(new_file_name) == pin_ext_len) { ! MsgBox("No file name specified.\n\nFile not saved.", ! TOOL_NAME, INFO_MB); ! return; ! } } else { strcat(new_file_name, pin_ext_str); --- 1134,1147 ---- break; case 2: ! if (FileNameHasExtension(new_file_name, OBJ_FILE_TYPE, &no_name)) { ! MsgBox("Cannot save as an object file; two symbols defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (FileNameHasExtension(new_file_name, SYM_FILE_TYPE, &no_name)) { ! MsgBox("Cannot save as a symbol file; two symbols defined.", ! TOOL_NAME, INFO_MB); ! return; ! } else if (FileNameHasExtension(new_file_name, PIN_FILE_TYPE, &no_name)) { ! /* don't modify */ } else { strcat(new_file_name, pin_ext_str); *************** *** 1081,1085 **** default: return; } ! if (*new_file_name == '/') { strcpy(new_full_name, new_file_name); --- 1165,1173 ---- default: return; } ! if (no_name) { ! MsgBox("No file name specified.\n\nFile not saved.", ! TOOL_NAME, INFO_MB); ! return; ! } if (*new_file_name == '/') { strcpy(new_full_name, new_file_name); *************** *** 1089,1093 **** sprintf(new_full_name, "%s/%s", curLocalDir, new_file_name); } - if (!OkayToCreateFile(new_full_name)) return; --- 1177,1180 ---- *************** *** 1239,1243 **** char sym_ext_str[MAXSTRING+1], pin_ext_str[MAXSTRING+1], *c_ptr; FILE *fp; ! int count=0, len, short_name, sym_ext_len, pin_ext_len; int saved_cur_file_defined, file_type=INVALID; struct ObjRec *obj_ptr; --- 1326,1330 ---- char sym_ext_str[MAXSTRING+1], pin_ext_str[MAXSTRING+1], *c_ptr; FILE *fp; ! int count=0, short_name; int saved_cur_file_defined, file_type=INVALID; struct ObjRec *obj_ptr; *************** *** 1311,1318 **** sprintf(sym_ext_str, ".%s", SYM_FILE_EXT); sprintf(pin_ext_str, ".%s", PIN_FILE_EXT); - sym_ext_len = strlen(sym_ext_str); - pin_ext_len = strlen(pin_ext_str); if (*curFileName == '\0') { Dialog("Please enter new file name:", "( : accept, : cancel )", new_file_name); --- 1398,1405 ---- sprintf(sym_ext_str, ".%s", SYM_FILE_EXT); sprintf(pin_ext_str, ".%s", PIN_FILE_EXT); if (*curFileName == '\0') { + int no_name=FALSE; + Dialog("Please enter new file name:", "( : accept, : cancel )", new_file_name); *************** *** 1320,1363 **** if (*new_file_name == '\0') return; ! len = strlen(new_file_name); ! if (len >= sym_ext_len || len >= pin_ext_len) { ! if (strcmp(&new_file_name[len-sym_ext_len], sym_ext_str) == 0) { ! } else if (strcmp(&new_file_name[len-pin_ext_len], pin_ext_str) == 0) { ! } else if (count == 1) { ! if (file_type == SYM_FILE_TYPE) { ! strcat(new_file_name, sym_ext_str); ! } else { ! strcat(new_file_name, pin_ext_str); ! } } else { strcat(new_file_name, pin_ext_str); } - if (strlen(new_file_name) == sym_ext_len) { - MsgBox("No file name specified.\n\nFile not saved.", - TOOL_NAME, INFO_MB); - return; - } } else { ! if (count == 1) { ! if (file_type == SYM_FILE_TYPE) { ! strcat(new_file_name, sym_ext_str); ! } else { ! strcat(new_file_name, pin_ext_str); ! } ! } else { ! strcat(new_file_name, pin_ext_str); ! } } ! } else { ! len = strlen(curFileName); ! for (c_ptr=(&curFileName[len-1]); c_ptr != curFileName; c_ptr--) { ! if (*c_ptr == '/') { ! break; ! } } ! if (*c_ptr == '/') c_ptr++; ! strcpy(new_file_name, c_ptr); } - if (SelectSymDir(dir_name) == INVALID) { Msg(""); --- 1407,1432 ---- if (*new_file_name == '\0') return; ! if (FileNameHasExtension(new_file_name, SYM_FILE_TYPE, &no_name)) { ! /* do nothing */ ! } else if (FileNameHasExtension(new_file_name, PIN_FILE_TYPE, &no_name)) { ! /* do nothing */ ! } else if (count == 1) { ! if (file_type == SYM_FILE_TYPE) { ! strcat(new_file_name, sym_ext_str); } else { strcat(new_file_name, pin_ext_str); } } else { ! strcat(new_file_name, pin_ext_str); } ! if (no_name) { ! MsgBox("No file name specified.\n\nFile not saved.", ! TOOL_NAME, INFO_MB); ! return; } ! } else { ! c_ptr = UtilStrRChr(curFileName, DIR_SEP); ! strcpy(new_file_name, (c_ptr==NULL) ? curFileName : ++c_ptr); } if (SelectSymDir(dir_name) == INVALID) { Msg(""); *************** *** 1364,1368 **** return; } - if (strcmp(dir_name, ".") == 0) { sprintf(new_full_name, "%s/%s", (curDirIsLocal ? curDir : curLocalDir), --- 1433,1436 ---- *************** *** 1444,1455 **** void SaveFile() { ! int i, len, count=0, short_name, file_type=INVALID; struct ObjRec *obj_ptr=NULL; FILE *fp=NULL; char ext[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1]; ! char full_name[MAXPATHLENGTH+1], *rest; ! struct PageRec *saved_cur_page; struct ObjRec *obj_ptr1=NULL, *obj_ptr2=NULL; ! struct AttrRec *attr_ptr; if (!curFileDefined || !curDirIsLocal) { --- 1512,1523 ---- void SaveFile() { ! int count=0, short_name, file_type=INVALID, no_name=FALSE; struct ObjRec *obj_ptr=NULL; FILE *fp=NULL; char ext[MAXPATHLENGTH+1], s[MAXPATHLENGTH+1]; ! char full_name[MAXPATHLENGTH+1], *rest=NULL, *psz; ! struct PageRec *saved_cur_page=NULL; struct ObjRec *obj_ptr1=NULL, *obj_ptr2=NULL; ! struct AttrRec *attr_ptr=NULL; if (!curFileDefined || !curDirIsLocal) { *************** *** 1457,1465 **** return; } - len = strlen(curFileName); - for (i=len-1; curFileName[i] != '.'; i--) ; - strcpy(ext, &curFileName[i+1]); - saved_cur_page = curPage; for (curPage=firstPage; curPage != NULL; curPage=curPage->next) { --- 1525,1534 ---- return; } + if ((psz=UtilStrRChr(curFileName, '.')) == NULL) { + TgAssert(FALSE, "Cannot find '.' in curFileName in SaveFile()", NULL); + return; + } + UtilStrCpyN(ext, sizeof(ext), psz); saved_cur_page = curPage; for (curPage=firstPage; curPage != NULL; curPage=curPage->next) { *************** *** 1479,1483 **** switch (count) { case 0: ! if (strcmp(ext, SYM_FILE_EXT) == 0) { sprintf(gszMsgBox, "%s.\n\n%s.", "No symbol defined in a symbol file", "Symbol file not saved"); --- 1548,1552 ---- switch (count) { case 0: ! if (FileNameHasExtension(ext, SYM_FILE_TYPE, &no_name)) { sprintf(gszMsgBox, "%s.\n\n%s.", "No symbol defined in a symbol file", "Symbol file not saved"); *************** *** 1484,1488 **** MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); return; ! } else if (strcmp(ext, PIN_FILE_EXT) == 0) { sprintf(gszMsgBox, "%s.\n\n%s.", "No symbol defined in a pin file", "Pin file not saved"); --- 1553,1557 ---- MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); return; ! } else if (FileNameHasExtension(ext, PIN_FILE_TYPE, &no_name)) { sprintf(gszMsgBox, "%s.\n\n%s.", "No symbol defined in a pin file", "Pin file not saved"); *************** *** 1490,1496 **** return; } break; case 1: ! if (strcmp(ext, OBJ_FILE_EXT) == 0) { sprintf(gszMsgBox, "%s.\n\n%s.", "One symbol defined in OBJECT file", "Object file not saved"); --- 1559,1566 ---- return; } + file_type = OBJ_FILE_TYPE; break; case 1: ! if (FileNameHasExtension(ext, OBJ_FILE_TYPE, &no_name)) { sprintf(gszMsgBox, "%s.\n\n%s.", "One symbol defined in OBJECT file", "Object file not saved"); *************** *** 1500,1504 **** if ((attr_ptr=FindAttrWithName(obj_ptr1, "type=", NULL)) != NULL && strcmp(attr_ptr->attr_value.s, "tgif_pin") == 0) { ! if (strcmp(ext, SYM_FILE_EXT) == 0) { sprintf(gszMsgBox, "%s.\n\n%s.", "The symbol is of type tgif_pin", --- 1570,1574 ---- if ((attr_ptr=FindAttrWithName(obj_ptr1, "type=", NULL)) != NULL && strcmp(attr_ptr->attr_value.s, "tgif_pin") == 0) { ! if (FileNameHasExtension(ext, SYM_FILE_TYPE, &no_name)) { sprintf(gszMsgBox, "%s.\n\n%s.", "The symbol is of type tgif_pin", *************** *** 1509,1513 **** file_type = PIN_FILE_TYPE; } else { ! if (strcmp(ext, PIN_FILE_EXT) == 0) { sprintf(gszMsgBox, "%s.\n\n%s.", "Only one symbol defined in a pin file", --- 1579,1583 ---- file_type = PIN_FILE_TYPE; } else { ! if (FileNameHasExtension(ext, PIN_FILE_TYPE, &no_name)) { sprintf(gszMsgBox, "%s.\n\n%s.", "Only one symbol defined in a pin file", *************** *** 1520,1524 **** break; case 2: ! if (strcmp(ext, OBJ_FILE_EXT) == 0) { sprintf(gszMsgBox, "%s.\n\n%s.", "One symbol defined in OBJECT file", "Object file not saved"); --- 1590,1594 ---- break; case 2: ! if (FileNameHasExtension(ext, OBJ_FILE_TYPE, &no_name)) { sprintf(gszMsgBox, "%s.\n\n%s.", "One symbol defined in OBJECT file", "Object file not saved"); *************** *** 1525,1529 **** MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); return; ! } else if (strcmp(ext, SYM_FILE_EXT) == 0) { sprintf(gszMsgBox, "%s.\n\n%s.", "Too many symbols defined in a symbol file", --- 1595,1599 ---- MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); return; ! } else if (FileNameHasExtension(ext, SYM_FILE_TYPE, &no_name)) { sprintf(gszMsgBox, "%s.\n\n%s.", "Too many symbols defined in a symbol file", *************** *** 1540,1550 **** return; } ! ! if (strcmp(ext, SYM_FILE_EXT) == 0 || strcmp(ext, PIN_FILE_EXT) == 0) { sprintf(full_name, "%s/%s", curSymDir, curFileName); ! } else if (strcmp(ext, OBJ_FILE_EXT) == 0) { sprintf(full_name, "%s/%s", curDir, curFileName); } - if ((short_name=IsPrefix(bootDir, full_name, &rest))) ++rest; if ((fp=fopen(full_name, "w")) == NULL) { --- 1610,1618 ---- return; } ! if (file_type == SYM_FILE_TYPE || file_type == PIN_FILE_TYPE) { sprintf(full_name, "%s/%s", curSymDir, curFileName); ! } else { sprintf(full_name, "%s/%s", curDir, curFileName); } if ((short_name=IsPrefix(bootDir, full_name, &rest))) ++rest; if ((fp=fopen(full_name, "w")) == NULL) { *************** *** 5656,5672 **** char *FileName; { ! int len, obj_ext_len, sym_ext_len, pin_ext_len, ok=TRUE; ! char obj_ext_str[MAXSTRING+1], sym_ext_str[MAXSTRING+1]; ! char pin_ext_str[MAXSTRING+1]; char dummy_str[MAXSTRING+1]; struct PageRec *saved_cur_page; - sprintf(obj_ext_str, ".%s", OBJ_FILE_EXT); - obj_ext_len = strlen(obj_ext_str); - sprintf(sym_ext_str, ".%s", SYM_FILE_EXT); - sym_ext_len = strlen(sym_ext_str); - sprintf(pin_ext_str, ".%s", PIN_FILE_EXT); - pin_ext_len = strlen(pin_ext_str); - if ((whereToPrint == LATEX_FIG || whereToPrint == EPSI_FILE || whereToPrint == TIFFEPSI_FILE) && pageLayoutMode == PAGE_TILE && --- 5724,5731 ---- char *FileName; { ! int ok=TRUE; char dummy_str[MAXSTRING+1]; struct PageRec *saved_cur_page; if ((whereToPrint == LATEX_FIG || whereToPrint == EPSI_FILE || whereToPrint == TIFFEPSI_FILE) && pageLayoutMode == PAGE_TILE && *************** *** 5682,5692 **** } if (PRTGIF) { ! len = strlen(FileName); ! if ((len >= obj_ext_len && ! strcmp(&FileName[len-obj_ext_len], obj_ext_str) == 0) || ! (len >= sym_ext_len && ! strcmp(&FileName[len-sym_ext_len], sym_ext_str) == 0)) { ! FileName[len-obj_ext_len] = '\0'; ! } if (cmdLineOneFilePerPage || (cmdLineHasPageNum && pageLayoutMode==PAGE_STACK && --- 5741,5745 ---- } if (PRTGIF) { ! RemoveFileNameExtension(FileName); if (cmdLineOneFilePerPage || (cmdLineHasPageNum && pageLayoutMode==PAGE_STACK && *************** *** 6186,6213 **** if (page_spec != NULL) free(page_spec); } else { ! char obj_ext_str[MAXSTRING]; ! int obj_ext_len, len, obj_file=TRUE; - sprintf(obj_ext_str, ".%s", OBJ_FILE_EXT); - obj_ext_len = strlen(obj_ext_str); - len = strlen(file_name); - - if (len < obj_ext_len || - strcmp(&file_name[len-obj_ext_len], obj_ext_str) != 0) { - sprintf(obj_ext_str, ".%s", SYM_FILE_EXT); - obj_ext_len = strlen(obj_ext_str); - - if (len >= obj_ext_len && - strcmp(&file_name[len-obj_ext_len], obj_ext_str) == 0) { - obj_file = FALSE; - } else { - sprintf(obj_ext_str, ".%s", PIN_FILE_EXT); - obj_ext_len = strlen(obj_ext_str); - if (len >= obj_ext_len && - strcmp(&file_name[len-obj_ext_len], obj_ext_str) == 0) { - obj_file = FALSE; - } - } - } if (!LoadFile(file_name, obj_file)) { if (do_not_save) { --- 6239,6244 ---- if (page_spec != NULL) free(page_spec); } else { ! int obj_file=FileNameHasExtension(file_name, OBJ_FILE_TYPE, NULL); if (!LoadFile(file_name, obj_file)) { if (do_not_save) { *** import.c.orig Thu Jan 14 23:21:00 1999 --- import.c Thu Jan 14 23:21:00 1999 *************** *** 161,165 **** sprintf(gszMsgBox, "Invalid %s*%s: '%s'.\n\n%s, e.g.,\n\n%s %s", TOOL_NAME, pszEntry, pszValue, ! "Format is \" \"", " JPEG jpg;jpeg", "djpeg -gif -colors 222 %s | giftopnm | ppmtoxpm"); --- 161,165 ---- sprintf(gszMsgBox, "Invalid %s*%s: '%s'.\n\n%s, e.g.,\n\n%s %s", TOOL_NAME, pszEntry, pszValue, ! "Format is \" \"", " JPEG jpg;jpeg", "djpeg -gif -colors 222 %s | giftopnm | ppmtoxpm"); *************** *** 167,171 **** sprintf(gszMsgBox, "Invalid %s*%s: '%s' (%s).\n\n%s, e.g.,\n\n%s %s", TOOL_NAME, pszEntry, pszValue, pszExplain, ! "Format is \" \"", " JPEG jpg;jpeg", "djpeg -gif -colors 222 %s | giftopnm | ppmtoxpm"); --- 167,171 ---- sprintf(gszMsgBox, "Invalid %s*%s: '%s' (%s).\n\n%s, e.g.,\n\n%s %s", TOOL_NAME, pszEntry, pszValue, pszExplain, ! "Format is \" \"", " JPEG jpg;jpeg", "djpeg -gif -colors 222 %s | giftopnm | ppmtoxpm"); *** mainloop.c.orig Thu Jan 14 23:21:02 1999 --- mainloop.c Thu Jan 14 23:21:02 1999 *************** *** 321,325 **** mainWindow = None; #ifndef DONT_FREE_COLORMAP ! if (newColormapUsed) XFreeColormap(mainDisplay, mainColormap); #endif /* ~DONT_FREE_COLORMAP */ } --- 321,328 ---- mainWindow = None; #ifndef DONT_FREE_COLORMAP ! if (newColormapUsed) { ! XFreeColormap(mainDisplay, mainColormap); ! newColormapUsed = FALSE; ! } #endif /* ~DONT_FREE_COLORMAP */ } *************** *** 456,464 **** int *pnNeedToCheckAutoExec; { ! int tmp_linenum, obj_ext_len; ! char tmp_filename[MAXPATHLENGTH+1], obj_ext_str[MAXSTRING+1]; char full_name[MAXPATHLENGTH+1], *rest; char *c_ptr=NULL, file_name[MAXPATHLENGTH+1]; ! int rc, len=0; int file_is_remote=FALSE, remote_buf_sz=0, is_html=FALSE; char remote_fname[MAXPATHLENGTH+1], *tmp_remote_fname=NULL; --- 459,467 ---- int *pnNeedToCheckAutoExec; { ! int tmp_linenum; ! char tmp_filename[MAXPATHLENGTH+1]; char full_name[MAXPATHLENGTH+1], *rest; char *c_ptr=NULL, file_name[MAXPATHLENGTH+1]; ! int rc; int file_is_remote=FALSE, remote_buf_sz=0, is_html=FALSE; char remote_fname[MAXPATHLENGTH+1], *tmp_remote_fname=NULL; *************** *** 605,611 **** int obj_file=TRUE; - sprintf(obj_ext_str, ".%s", OBJ_FILE_EXT); - obj_ext_len = strlen(obj_ext_str); - *file_name = '\0'; if (file_is_remote) { --- 608,611 ---- *************** *** 620,629 **** file_is_remote = FALSE; } else { ! len = strlen(remote_fname); ! sprintf(obj_ext_str, ".%s", SYM_FILE_EXT); ! obj_ext_len = strlen(obj_ext_str); ! if (len >= obj_ext_len && ! strcmp(&pszFile[len-obj_ext_len], obj_ext_str) == 0) { obj_file = FALSE; } else { obj_file = TRUE; --- 620,628 ---- file_is_remote = FALSE; } else { ! if (FileNameHasExtension(remote_fname, SYM_FILE_TYPE, NULL)) { obj_file = FALSE; + } else if (FileNameHasExtension(remote_fname, SYM_FILE_TYPE, + NULL)) { + obj_file = FALSE; } else { obj_file = TRUE; *************** *** 631,649 **** } } else { ! len = strlen(pszFile); ! if (len >= obj_ext_len && ! strcmp(&pszFile[len-obj_ext_len], obj_ext_str) == 0) { strcpy(file_name, pszFile); } else { ! sprintf(obj_ext_str, ".%s", SYM_FILE_EXT); ! obj_ext_len = strlen(obj_ext_str); ! ! if (len >= obj_ext_len && ! strcmp(&pszFile[len-obj_ext_len], obj_ext_str) == 0) { ! strcpy(file_name, pszFile); ! obj_file = FALSE; ! } else { ! sprintf(file_name, "%s.%s", pszFile, OBJ_FILE_EXT); ! } } if ((short_name=IsPrefix(bootDir, file_name, &rest))) ++rest; --- 630,643 ---- } } else { ! if (FileNameHasExtension(pszFile, OBJ_FILE_TYPE, NULL)) { strcpy(file_name, pszFile); + } else if (FileNameHasExtension(pszFile, SYM_FILE_TYPE, NULL)) { + strcpy(file_name, pszFile); + obj_file = FALSE; + } else if (FileNameHasExtension(pszFile, PIN_FILE_TYPE, NULL)) { + strcpy(file_name, pszFile); + obj_file = FALSE; } else { ! sprintf(file_name, "%s.%s", pszFile, OBJ_FILE_EXT); } if ((short_name=IsPrefix(bootDir, file_name, &rest))) ++rest; *** msg.c.orig Thu Jan 14 23:21:03 1999 --- msg.c Thu Jan 14 23:21:03 1999 *************** *** 1093,1097 **** fprintf(stderr, "\t[-exec ] \\\n"); fprintf(stderr, "\t[-dbim {xcin|chinput|xim|kinput2}] \\\n"); ! fprintf(stderr, "\t[[.obj]]\n"); fprintf(stderr, "or:\n"); fprintf(stderr, "\t%s -print \\\n", tool_name); --- 1093,1097 ---- fprintf(stderr, "\t[-exec ] \\\n"); fprintf(stderr, "\t[-dbim {xcin|chinput|xim|kinput2}] \\\n"); ! fprintf(stderr, "\t[[.%s]]\n", OBJ_FILE_EXT); fprintf(stderr, "or:\n"); fprintf(stderr, "\t%s -print \\\n", tool_name); *************** *** 1119,1123 **** fprintf(stderr, "\t[-tmp_file_mode \"\"] \\\n"); fprintf(stderr, "\t[-odir] \\\n"); ! fprintf(stderr, "\t[[.obj] [.obj] ...]\n"); exit(-1); } --- 1119,1124 ---- fprintf(stderr, "\t[-tmp_file_mode \"\"] \\\n"); fprintf(stderr, "\t[-odir] \\\n"); ! fprintf(stderr, "\t[[.%s] [.%s] ...]\n", ! OBJ_FILE_EXT, OBJ_FILE_EXT); exit(-1); } *** names.c.orig Thu Jan 14 23:21:04 1999 --- names.c Thu Jan 14 23:21:05 1999 *************** *** 793,796 **** --- 793,814 ---- sprintf(dirNamesInfo.other_ext_str, ".%s;.%s", SYM_FILE_EXT, PIN_FILE_EXT); + if (strstr(dirNamesInfo.other_ext_str, ".obj") == NULL) { + strcat(dirNamesInfo.other_ext_str, ";.obj"); + } + if (strstr(dirNamesInfo.other_ext_str, ".sym") == NULL) { + strcat(dirNamesInfo.other_ext_str, ";.sym"); + } + if (strstr(dirNamesInfo.other_ext_str, ".pin") == NULL) { + strcat(dirNamesInfo.other_ext_str, ";.pin"); + } + if (strstr(dirNamesInfo.other_ext_str, ".tgo") == NULL) { + strcat(dirNamesInfo.other_ext_str, ";.tgo"); + } + if (strstr(dirNamesInfo.other_ext_str, ".tgs") == NULL) { + strcat(dirNamesInfo.other_ext_str, ";.tgs"); + } + if (strstr(dirNamesInfo.other_ext_str, ".tgp") == NULL) { + strcat(dirNamesInfo.other_ext_str, ";.tgp"); + } } else if (ExtStr != NULL && strcmp(ExtStr, "gif") == 0) { strcpy(dirNamesInfo.other_ext_str, ".GIF"); *** special.c.orig Thu Jan 14 23:21:06 1999 --- special.c Thu Jan 14 23:21:06 1999 *************** *** 671,680 **** { char icon_name[MAXPATHLENGTH], file_name[MAXPATHLENGTH]; ! char s[MAXPATHLENGTH], icon_full_name[MAXPATHLENGTH], * rest; ! char obj_ext_str[MAXSTRING], sym_ext_str[MAXSTRING]; ! FILE *fp; ! int len, short_name, obj_ext_len, sym_ext_len, ltx, lty, rbx, rby; if (topSel!=NULL && topSel==botSel) { if (sym_path == NULL) { Dialog("Please enter name of the icon:", NULL, icon_name); --- 671,682 ---- { char icon_name[MAXPATHLENGTH], file_name[MAXPATHLENGTH]; ! char icon_full_name[MAXPATHLENGTH], *rest=NULL, *psz=NULL; ! char sym_ext_str[MAXSTRING]; ! FILE *fp=NULL; ! int len, short_name, sym_ext_len, ltx, lty, rbx, rby; if (topSel!=NULL && topSel==botSel) { + int no_name=FALSE; + if (sym_path == NULL) { Dialog("Please enter name of the icon:", NULL, icon_name); *************** *** 689,714 **** len = strlen(icon_name); } - sprintf(obj_ext_str, ".%s", OBJ_FILE_EXT); sprintf(sym_ext_str, ".%s", SYM_FILE_EXT); - obj_ext_len = strlen(obj_ext_str); sym_ext_len = strlen(sym_ext_str); ! if (len >= obj_ext_len || len >= sym_ext_len) { ! if (strcmp(&icon_name[len-obj_ext_len], obj_ext_str) == 0) { ! MsgBox("Cannot save as an object file, icon not created.", ! TOOL_NAME, INFO_MB); ! return FALSE; ! } else if (strcmp(&icon_name[len-sym_ext_len], sym_ext_str) == 0) { ! strcpy(icon_full_name, icon_name); ! icon_name[len-sym_ext_len] = '\0'; } else { ! strcpy(icon_full_name, icon_name); ! strcat(icon_full_name, sym_ext_str); ! } ! if (strlen(icon_full_name) == sym_ext_len) { ! MsgBox("No file name specified. File not saved.", ! TOOL_NAME, INFO_MB); return FALSE; } } else { strcpy(icon_full_name, icon_name); --- 691,714 ---- len = strlen(icon_name); } sprintf(sym_ext_str, ".%s", SYM_FILE_EXT); sym_ext_len = strlen(sym_ext_str); ! if (FileNameHasExtension(icon_name, OBJ_FILE_TYPE, NULL)) { ! MsgBox("Cannot save as an object file, icon not created.", ! TOOL_NAME, INFO_MB); ! return FALSE; ! } else if (FileNameHasExtension(icon_name, SYM_FILE_TYPE, NULL)) { ! strcpy(icon_full_name, icon_name); ! if ((psz=UtilStrRChr(icon_name, '.')) != NULL) { ! *psz = '\0'; } else { ! TgAssert(FALSE, ! "Cannot find '.' in icon_name in MakeIconic()", NULL); return FALSE; } + } else if (FileNameHasExtension(icon_name, PIN_FILE_TYPE, NULL)) { + MsgBox("Cannot save as a pin file, icon not created.", + TOOL_NAME, INFO_MB); + return FALSE; } else { strcpy(icon_full_name, icon_name); *************** *** 715,718 **** --- 715,723 ---- strcat(icon_full_name, sym_ext_str); } + if (no_name) { + MsgBox("No file name specified.\n\nFile not saved.", + TOOL_NAME, INFO_MB); + return FALSE; + } if (sym_path == NULL) { sprintf(file_name, "%s/%s", curDir, icon_full_name); *************** *** 725,733 **** if ((fp=fopen(file_name, "w")) == NULL) { if (short_name) { ! sprintf(s, "Cannot create '%s', icon not created.", rest); } else { ! sprintf(s, "Cannot create '%s', icon not created.", file_name); } ! MsgBox(s, TOOL_NAME, INFO_MB); return FALSE; } --- 730,739 ---- if ((fp=fopen(file_name, "w")) == NULL) { if (short_name) { ! sprintf(gszMsgBox, "Cannot create '%s', icon not created.", rest); } else { ! sprintf(gszMsgBox, "Cannot create '%s', icon not created.", ! file_name); } ! MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); return FALSE; } *************** *** 736,744 **** } if (short_name) { ! sprintf(s, "Creating '%s' ...", rest); } else { ! sprintf(s, "Creating '%s' ...", file_name); } ! Msg(s); ltx = selLtX; lty = selLtY; rbx = selRbX; rby = selRbY; --- 742,750 ---- } if (short_name) { ! sprintf(gszMsgBox, "Creating '%s' ...", rest); } else { ! sprintf(gszMsgBox, "Creating '%s' ...", file_name); } ! Msg(gszMsgBox); ltx = selLtX; lty = selLtY; rbx = selRbX; rby = selRbY; *************** *** 773,788 **** if (writeFileFailed) { writeFileFailed = FALSE; ! sprintf(s, "%s '%s'.\n\n%s.\n\n'%s' deleted.", "Fail to write to", file_name, "File system may be full", file_name); ! MsgBox(s, TOOL_NAME, INFO_MB); unlink(file_name); } else { if (short_name) { ! sprintf(s, "File '%s' created.", rest); } else { ! sprintf(s, "File '%s' created.", file_name); } ! Msg(s); } fclose(fp); --- 779,794 ---- if (writeFileFailed) { writeFileFailed = FALSE; ! sprintf(gszMsgBox, "%s '%s'.\n\n%s.\n\n'%s' deleted.", "Fail to write to", file_name, "File system may be full", file_name); ! MsgBox(gszMsgBox, TOOL_NAME, INFO_MB); unlink(file_name); } else { if (short_name) { ! sprintf(gszMsgBox, "File '%s' created.", rest); } else { ! sprintf(gszMsgBox, "File '%s' created.", file_name); } ! Msg(gszMsgBox); } fclose(fp); *** tgif.c.orig Thu Jan 14 23:21:07 1999 --- tgif.c Thu Jan 14 23:21:07 1999 *************** *** 143,167 **** char *FileName; { ! struct ObjRec *obj_ptr; char full_name[MAXPATHLENGTH+1], tmp_filename[MAXPATHLENGTH+1]; ! int len, read_status, obj_file=TRUE; ! FILE *fp; ! int tmp_linenum, obj_ext_len, sym_ext_len; ! char obj_ext_str[MAXSTRING+1], sym_ext_str[MAXSTRING+1]; ! sprintf(obj_ext_str, ".%s", OBJ_FILE_EXT); ! obj_ext_len = strlen(obj_ext_str); ! sprintf(sym_ext_str, ".%s", SYM_FILE_EXT); ! sym_ext_len = strlen(sym_ext_str); ! ! len = strlen(FileName); ! ! if (len>=obj_ext_len && ! strcmp(&FileName[len-obj_ext_len], obj_ext_str) == 0) { strcpy(full_name, FileName); ! } else if (len>=sym_ext_len && ! strcmp(&FileName[len-sym_ext_len],sym_ext_str)==0) { strcpy(full_name, FileName); obj_file = FALSE; } else { sprintf(full_name, "%s.%s", FileName, OBJ_FILE_EXT); --- 143,160 ---- char *FileName; { ! struct ObjRec *obj_ptr=NULL; char full_name[MAXPATHLENGTH+1], tmp_filename[MAXPATHLENGTH+1]; ! int read_status, obj_file=TRUE; ! FILE *fp=NULL; ! int tmp_linenum; ! if (FileNameHasExtension(FileName, OBJ_FILE_TYPE, NULL)) { strcpy(full_name, FileName); ! } else if (FileNameHasExtension(FileName, SYM_FILE_TYPE, NULL)) { strcpy(full_name, FileName); obj_file = FALSE; + } else if (FileNameHasExtension(FileName, PIN_FILE_TYPE, NULL)) { + strcpy(full_name, FileName); + obj_file = FALSE; } else { sprintf(full_name, "%s.%s", FileName, OBJ_FILE_EXT); *** file.e.orig Thu Jan 14 23:21:08 1999 --- file.e Thu Jan 14 23:21:08 1999 *************** *** 135,140 **** extern void CleanUpComments ARGS_DECL((void)); extern void ClearFileInfo ARGS_DECL((int clean_up_comments)); ! extern int OkayToCreateFile ARGS_DECL((char *)); ! extern void SaveObj ARGS_DECL((FILE *, struct ObjRec *ObjPtr, int Level)); extern void Save ARGS_DECL((FILE *, struct ObjRec *BotObj, int Level, int PageNumber)); --- 135,143 ---- extern void CleanUpComments ARGS_DECL((void)); extern void ClearFileInfo ARGS_DECL((int clean_up_comments)); ! extern int OkayToCreateFile ARGS_DECL((char*)); ! extern void SaveObj ARGS_DECL((FILE*, struct ObjRec *ObjPtr, int Level)); ! extern int FileNameHasExtension ARGS_DECL((char *file_name, int file_type, ! int *pn_no_name)); ! extern void RemoveFileNameExtension ARGS_DECL((char*)); extern void Save ARGS_DECL((FILE *, struct ObjRec *BotObj, int Level, int PageNumber)); *** patchlvl.h.orig Thu Jan 14 23:21:09 1999 --- patchlvl.h Thu Jan 14 23:21:09 1999 *************** *** 35,39 **** #define _TGIF_PATCHLEVEL_H_ ! #define TGIF_PATCHLEVEL 4 #endif /*_TGIF_PATCHLEVEL_H_*/ --- 35,39 ---- #define _TGIF_PATCHLEVEL_H_ ! #define TGIF_PATCHLEVEL 5 #endif /*_TGIF_PATCHLEVEL_H_*/ *** Imakefile.orig Thu Jan 14 23:21:10 1999 --- Imakefile Thu Jan 14 23:21:10 1999 *************** *** 53,57 **** $(MOREDEFINES) ! TGIFVERSION = 4.0.4 XCOMM Things to try to add to the DEFINES line above: --- 53,57 ---- $(MOREDEFINES) ! TGIFVERSION = 4.0.5 XCOMM Things to try to add to the DEFINES line above: *** HISTORY.orig Thu Jan 14 23:21:11 1999 --- HISTORY Thu Jan 14 23:21:11 1999 *************** *** 1,2 **** --- 1,12 ---- + -----------------------> tgif-4.0.4 => tgif-4.0.5 <----------------------- + Here's a short list of added features/bug fixes. + + 1) Fix a bug that generates bad a GIF file when running tgif with + "-print -gif" commandline arguments. Thanks to Dick Wesseling + for pointing out this problem. + 2) Support more tgif file name extensions. Allow ".tgo" to also be a tgif + object file name extension and ".tgs" to also be a tgif symbol file name + extension. + -----------------------> tgif-4.0.3 => tgif-4.0.4 <----------------------- Here's a short list of added features/bug fixes.