diff -c -N ../xfaces-3.3-org/Imakefile ./Imakefile *** ../xfaces-3.3-org/Imakefile Sun Mar 13 01:38:53 1994 --- ./Imakefile Wed Dec 11 14:08:06 1996 *************** *** 53,58 **** --- 53,60 ---- #define USE_POP #define LOOKUP_HOSTNAME + #define IHaveSubdirs + SUBDIRS = images sounds # # For debugging. # *************** *** 65,71 **** # -DLOOKUP_DEBUG # #CDEBUGFLAGS= -Wall -g ! #CDEBUGFLAGS= -g #ifdef USE_XFACE XFACE_SRCS = face_search_xface.c face_image_xface.c --- 67,73 ---- # -DLOOKUP_DEBUG # #CDEBUGFLAGS= -Wall -g ! CDEBUGFLAGS= -pipe -O2 #ifdef USE_XFACE XFACE_SRCS = face_search_xface.c face_image_xface.c *************** *** 265,271 **** files: @echo $(HDRS) $(SRCS) $(OTHER_FILES) ! clean:: rm -rf Distribution --- 267,273 ---- files: @echo $(HDRS) $(SRCS) $(OTHER_FILES) ! clean:: rm -rf Distribution diff -c -N ../xfaces-3.3-org/XFaces.ad ./XFaces.ad *** ../xfaces-3.3-org/XFaces.ad Sun Mar 13 01:38:54 1994 --- ./XFaces.ad Wed Dec 11 14:22:15 1996 *************** *** 71,78 **** ! lists. ! ! XFaces.soundPath: /usr/sounds:/usr/demo/SOUND/sounds ! XFaces.imagePath: /usr/images ! ! This is where we look for sounds/images in the "faces" format. --- 71,78 ---- ! lists. ! ! XFaces.soundPath: /usr/local/share/sounds ! XFaces.imagePath: /usr/X11R6/include/X11/pixmaps ! ! This is where we look for sounds/images in the "faces" format. *************** *** 100,106 **** ! image types are set in the imageTypes resource. ! ! XFaces.facedbPath: /usr/faces ! ! Tell how many different annotations there are. We can support any number. --- 100,106 ---- ! image types are set in the imageTypes resource. ! ! XFaces.facedbPath: /usr/local/share/faces ! ! Tell how many different annotations there are. We can support any number. *************** *** 244,250 **** ! weather.listCommand: wx.faces wbc ! weather.facedbPath: /usr/faces/weather weather.compressImages: False weather.keepOrder: True weather.shapeExtra: False --- 244,250 ---- ! weather.listCommand: wx.faces wbc ! weather.facedbPath: /usr/local/share/faces/weather weather.compressImages: False weather.keepOrder: True weather.shapeExtra: False *************** *** 337,358 **** ! Could setup special sounds for mailing lists. ! ! !XFaces.beforeSoundBindings: \ ! ! Cc: foo: train ! ! Could use this to show a special face for users that we have no face for. ! ! !XFaces.afterImageBindings: \ ! ! * .*: unknown ! ! Could setup default sounds if no sound is specified. ! ! !XFaces.afterSoundBindings: \ ! ! * .*: train ! ! This set of bindings is run after the all of the image search has --- 337,358 ---- ! Could setup special sounds for mailing lists. ! ! |Faces.beforeSoundBindings: \ ! | Cc: foo: train ! ! Could use this to show a special face for users that we have no face for. ! ! XFaces.afterImageBindings: \ ! * .*: unknown ! ! Could setup default sounds if no sound is specified. ! ! XFaces.afterSoundBindings: \ ! * .*: train ! ! This set of bindings is run after the all of the image search has *************** *** 382,387 **** ! Mail from root. ! ! XFaces.image.root: root XFaces.sound.root: busy - --- 382,386 ---- ! Mail from root. ! ! XFaces.image.root root XFaces.sound.root: busy diff -c -N ../xfaces-3.3-org/face_image.c ./face_image.c *** ../xfaces-3.3-org/face_image.c Sun Mar 13 01:38:40 1994 --- ./face_image.c Wed Dec 11 09:22:28 1996 *************** *** 204,218 **** int length; static char* filename = NULL; static int filename_length = 0; ! /* * First see if we already have this image. */ for (fi = TheImages; fi != NULL; fi = fi->next) { if (strcmp(fi->file, file) == 0) { /* * Yep! */ --- 204,225 ---- int length; static char* filename = NULL; static int filename_length = 0; ! ! char my_label[512]; /* * First see if we already have this image. */ + for (fi = TheImages; fi != NULL; fi = fi->next) { if (strcmp(fi->file, file) == 0) { + if (info && info->item) { + sprintf(my_label, "%s@%s", info->item->user, info->item->host); + if (strcmp(fi->label, my_label)) + break; + } /* * Yep! */ *************** *** 290,296 **** /* * Ok, create a face image struct. */ - fi = FaceImageCreate(file, info->type, image_data); info->item->image = fi; --- 297,302 ---- *************** *** 367,372 **** --- 373,383 ---- break; } } + + #ifdef FACEDB_DEBUG + if (found) + fprintf(stderr, "FaceImageLoad: Reporting %s as found\n", file); + #endif return found; } diff -c -N ../xfaces-3.3-org/face_search_facedb.c ./face_search_facedb.c *** ../xfaces-3.3-org/face_search_facedb.c Sun Mar 13 01:38:42 1994 --- ./face_search_facedb.c Tue Dec 10 10:41:23 1996 *************** *** 483,488 **** --- 483,492 ---- int parts; char* username; FacedbMap* map; + + #ifdef FACEDB_DEBUG + fprintf(stderr, "facedb: searching in path %s\n", path); + #endif if (buffer1 == NULL) { *************** *** 535,541 **** */ FaceSearchFacedbMakeName(file, info, i, buffer1); ! /* * Try to load this guy. */ --- 539,545 ---- */ FaceSearchFacedbMakeName(file, info, i, buffer1); ! #ifndef FACE_FILES_ONLY /* * Try to load this guy. */ *************** *** 550,556 **** XtFree(hostdata); return 1; } ! /* * try adding "/face" and see what we find. */ --- 554,560 ---- XtFree(hostdata); return 1; } ! #endif /* * try adding "/face" and see what we find. */ *************** *** 570,598 **** return 1; } - #if 0 - /* - * Finally if we are looking for an image try "/48x48x1". - */ - - if (info->data->format == FormatImage) - { - strcpy(tail, "/48x48x1"); - - if (FaceSearchLoad(buffer1, info->item, info->data)) - { - XtFree((char*) host); - XtFree(hostdata); - return 1; - } - } - #endif } /* * try for user in the MISC directory. */ ! sprintf(buffer1, "%sMISC/%s", file, username); #ifdef FACEDB_DEBUG --- 574,585 ---- return 1; } } /* * try for user in the MISC directory. */ ! #ifndef FACE_FILES_ONLY sprintf(buffer1, "%sMISC/%s", file, username); #ifdef FACEDB_DEBUG *************** *** 605,611 **** XtFree(hostdata); return 1; } ! sprintf(buffer1, "%sMISC/%s/face", file, username); #ifdef FACEDB_DEBUG --- 592,598 ---- XtFree(hostdata); return 1; } ! #endif sprintf(buffer1, "%sMISC/%s/face", file, username); #ifdef FACEDB_DEBUG *************** *** 632,638 **** */ FaceSearchFacedbMakeName(file, info, i, buffer1); ! /* * Try to load this guy. */ --- 619,625 ---- */ FaceSearchFacedbMakeName(file, info, i, buffer1); ! #ifndef FACE_FILES_ONLY /* * Try to load this guy. */ *************** *** 653,659 **** return 1; } ! /* * try adding "/face" and see what we find. */ --- 640,646 ---- return 1; } ! #endif /* * try adding "/face" and see what we find. */ *************** *** 679,701 **** return 1; } - #if 0 - /* - * Finally if we are looking for an image try "/48x48x1". - */ - - if (info->data->format == FormatImage) - { - strcpy(tail, "/48x48x1"); - - if (FaceSearchLoad(buffer1, info->item, info->data)) - { - XtFree((char*) host); - XtFree(hostdata); - return 1; - } - } - #endif } XtFree((char*) host); --- 666,671 ---- *************** *** 704,710 **** /* * One last try. The MISC directory. Look for "unknown" */ ! sprintf(buffer1, "%sMISC/unknown", file); #ifdef FACEDB_DEBUG --- 674,680 ---- /* * One last try. The MISC directory. Look for "unknown" */ ! #ifndef FACE_FILES_ONLY sprintf(buffer1, "%sMISC/unknown", file); #ifdef FACEDB_DEBUG *************** *** 721,727 **** return 1; } ! sprintf(buffer1, "%sMISC/unknown/face", file); #ifdef FACEDB_DEBUG --- 691,697 ---- return 1; } ! #endif sprintf(buffer1, "%sMISC/unknown/face", file); #ifdef FACEDB_DEBUG Common subdirectories: ../xfaces-3.3-org/images and ./images diff -c -N ../xfaces-3.3-org/mail_items.c ./mail_items.c *** ../xfaces-3.3-org/mail_items.c Sun Mar 13 01:38:44 1994 --- ./mail_items.c Tue Dec 10 10:25:32 1996 *************** *** 351,359 **** MailBoxClean() { MailItem *item; ! ! for (item = TheMailItems; item != NULL; item = item->next) { if (item->in_use == 0) { MailItemFree(item); --- 351,368 ---- MailBoxClean() { MailItem *item; ! MailItem *next_item; ! ! for (item = TheMailItems; item != NULL; item = next_item) { + /* + * Save item->next here because if MailItemFree() is called, it will + * free item and we won't be able to access it after the call. + * Found by phkmalloc. Philippe Charnier (charnier@xp11.frmug.org) + * 11/96. + */ + next_item = item->next; + if (item->in_use == 0) { MailItemFree(item); *************** *** 651,656 **** --- 660,666 ---- { item->prev = TheMailItemsTail; item->prev->next = item; + TheMailItemsTail = item; } item->face = FaceDisplay(item); diff -c -N ../xfaces-3.3-org/main.c ./main.c *** ../xfaces-3.3-org/main.c Sun Mar 13 01:38:45 1994 --- ./main.c Wed Dec 11 14:23:05 1996 *************** *** 124,130 **** }, { "spoolDir", "SpoolDir", XtRString, sizeof(String), ! offset(spool_dir), XtRString, "/usr/spool/mail" }, { "popHost", "PopHost", XtRString, sizeof(String), --- 124,130 ---- }, { "spoolDir", "SpoolDir", XtRString, sizeof(String), ! offset(spool_dir), XtRString, "/var/mail/" }, { "popHost", "PopHost", XtRString, sizeof(String), *************** *** 144,158 **** }, { "imagePath", "Path", XtRString, sizeof(String), ! offset(image_path), XtRString, "/usr/images" }, { "soundPath", "Path", XtRString, sizeof(String), ! offset(sound_path), XtRString, "/usr/sounds" }, { "facedbPath", "Path", XtRString, sizeof(String), ! offset(facedb_path), XtRString, "/usr/local/faces" }, { "machine", "Path", XtRString, sizeof(String), --- 144,158 ---- }, { "imagePath", "Path", XtRString, sizeof(String), ! offset(image_path), XtRString, "/usr/X11R6/include/X11/pixmaps" }, { "soundPath", "Path", XtRString, sizeof(String), ! offset(sound_path), XtRString, "/usr/local/share/sounds" }, { "facedbPath", "Path", XtRString, sizeof(String), ! offset(facedb_path), XtRString, "/usr/local/share/faces" }, { "machine", "Path", XtRString, sizeof(String), *************** *** 297,303 **** static XrmOptionDescRec options[] = { { ! "-c", "frame.setWidth", XrmoptionSepArg, NULL }, { "-e", "listCommand", XrmoptionSepArg, NULL --- 297,303 ---- static XrmOptionDescRec options[] = { { ! "-c", "frame.maxWidth", XrmoptionSepArg, NULL }, { "-e", "listCommand", XrmoptionSepArg, NULL Common subdirectories: ../xfaces-3.3-org/sounds and ./sounds diff -c -N ../xfaces-3.3-org/xfaces.man ./xfaces.man *** ../xfaces-3.3-org/xfaces.man Sun Mar 13 01:38:54 1994 --- ./xfaces.man Wed Dec 11 16:20:47 1996 *************** *** 171,177 **** .TP 8 .BI XFaces.spoolDir: " " This resource specifies the directory that contains user mail spool ! files. The default is \fI/usr/spool/mail\fP. On some machines (SVR4?) you may want to set this to \fI/usr/mail\fP. .TP 8 .BI XFaces.popHost: " " --- 171,177 ---- .TP 8 .BI XFaces.spoolDir: " " This resource specifies the directory that contains user mail spool ! files. The default is \fI/var/mail\fP. On some machines (SVR4?) you may want to set this to \fI/usr/mail\fP. .TP 8 .BI XFaces.popHost: " " *************** *** 198,209 **** .BI XFaces.imagePath: " " This resource specifies a colon-separated list of directories that specify the default directories to use for image files. The default ! is \fI/usr/images\fP. .TP 8 .BI XFaces.soundPath: " " This resource specifies a colon-separated list of directories that specify the default directories to use for sound files. The default ! is \fI/usr/sounds\fP. .TP 8 .BI XFaces.facedbPath: " " This is a list of directories that contain a multi-level directory hierarchy. --- 198,209 ---- .BI XFaces.imagePath: " " This resource specifies a colon-separated list of directories that specify the default directories to use for image files. The default ! is \fI/usr/X11/include/X11/pixmaps\fP. .TP 8 .BI XFaces.soundPath: " " This resource specifies a colon-separated list of directories that specify the default directories to use for sound files. The default ! is \fI/usr/local/share/sounds\fP. .TP 8 .BI XFaces.facedbPath: " " This is a list of directories that contain a multi-level directory hierarchy. *************** *** 289,295 **** no image. This defaults to \fITrue\fP. .TP 8 .BI XFaces.useCommands: " " ! This resource tells \FIXFaces\fP if it needs to search for shell commands to run in addition to image and sounds. The default is \fIFalse\fP. .TP 8 .BI XFaces.useContentLength: " " --- 289,295 ---- no image. This defaults to \fITrue\fP. .TP 8 .BI XFaces.useCommands: " " ! This resource tells \fIXFaces\fP if it needs to search for shell commands to run in addition to image and sounds. The default is \fIFalse\fP. .TP 8 .BI XFaces.useContentLength: " " *************** *** 318,324 **** .TP 8 .B xpm-shaped This is a shaped color image. Shaped xpm files should be named ! \fIface-shaped.xpm\fP. .TP 8 .B xpm This is a non shaped color image. These files should be named --- 318,324 ---- .TP 8 .B xpm-shaped This is a shaped color image. Shaped xpm files should be named ! \fIface-shape.xpm\fP. .TP 8 .B xpm This is a non shaped color image. These files should be named *************** *** 357,363 **** The \fI\fP is currently ignored for the \fBsoundSearch\fP resource. Both the \fI\fP and the are (except if you use the \fIfacedb\fP search) for the \fBcommandSearch\fP ! resoiurce. If the \fI\fP is empty then the list in the \fBimageFormats\fP resource is used. If the \fI\fP is empty then the \fBfacedbPath\fP is used for \fIfacedb\fP searches for both sounds and images and one of the \fBsoundPath\fP or --- 357,363 ---- The \fI\fP is currently ignored for the \fBsoundSearch\fP resource. Both the \fI\fP and the are (except if you use the \fIfacedb\fP search) for the \fBcommandSearch\fP ! resource. If the \fI\fP is empty then the list in the \fBimageFormats\fP resource is used. If the \fI\fP is empty then the \fBfacedbPath\fP is used for \fIfacedb\fP searches for both sounds and images and one of the \fBsoundPath\fP or