aboutsummaryrefslogtreecommitdiff
path: root/mail/xpbiff/files/patch-ae
diff options
context:
space:
mode:
Diffstat (limited to 'mail/xpbiff/files/patch-ae')
-rw-r--r--mail/xpbiff/files/patch-ae352
1 files changed, 352 insertions, 0 deletions
diff --git a/mail/xpbiff/files/patch-ae b/mail/xpbiff/files/patch-ae
new file mode 100644
index 000000000000..a50cbe33e073
--- /dev/null
+++ b/mail/xpbiff/files/patch-ae
@@ -0,0 +1,352 @@
+--- xpbiff.c.orig Thu Oct 27 15:42:52 1994
++++ xpbiff.c Sat Sep 28 01:37:19 2002
+@@ -74,6 +74,12 @@
+ #endif
+ #endif /* SUN_AUDIO */
+
++#ifdef BSD_AUDIO
++#include <sys/soundcard.h>
++#define MAX_SOUND_VOL 95
++#define MIN_SOUND_VOL 05
++#endif
++
+ #ifndef X11R3
+ #include <X11/Xaw/Box.h>
+ #include <X11/Xaw/Label.h>
+@@ -116,7 +122,11 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <stdio.h>
++#include <stdlib.h>
+ #include <math.h>
++#ifdef HAVE_GETPWUID
++#include <pwd.h>
++#endif /* HAVE_GETPWUID */
+
+ #ifdef YOUBIN
+
+@@ -149,11 +159,13 @@
+
+ #ifndef YOUBIN
+
++#ifndef SPOOLPATH
+ #ifdef USG
+ #define SPOOLPATH "/usr/mail/"
+ #else
+ #define SPOOLPATH "/usr/spool/mail/"
+ #endif
++#endif
+
+ #else /* YOUBIN */
+
+@@ -324,7 +336,7 @@
+ NULL
+ };
+
+-#ifdef SUN_AUDIO
++#if (defined(SUN_AUDIO) || defined(BSD_AUDIO))
+ String mail_sndfile;
+ int volume;
+ #endif
+@@ -399,7 +411,7 @@
+ {"nomailPixmapMask", "NomailPixmapMask", XtRBitmap, sizeof(Pixmap),
+ (Cardinal)&noPixmapMask, XtRBitmap, None},
+ #endif
+-#ifdef SUN_AUDIO
++#if (defined(SUN_AUDIO) || defined(BSD_AUDIO))
+ {"mailSndFile", "MailSndFile", XtRString, sizeof(String),
+ (Cardinal)&mail_sndfile, XtRString, None},
+ {"volume", "Volume", XtRInt, sizeof(int),
+@@ -445,7 +457,7 @@
+ {"-server", "*server", XrmoptionSepArg, NULL},
+ {"-preserve", "*preserve", XrmoptionNoArg, "true"},
+ #endif /* YOUBIN */
+-#ifdef SUN_AUDIO
++#if (defined(SUN_AUDIO) || defined(BSD_AUDIO))
+ {"-sndfile", "*mailSndFile", XrmoptionSepArg, NULL},
+ {"-volume", "*volume", XrmoptionSepArg, NULL},
+ #endif
+@@ -461,6 +473,7 @@
+ #ifdef JCONVERT
+ static Locale_ent locale_list[] = {
+ {"ja_JP.EUC", EUC},
++ {"ja_JP.eucJP", EUC},
+ {"ja_JP.SJIS", SJIS},
+ {"ja_JP.jis7", JIS},
+ {"ja_JP.jis8", JIS},
+@@ -485,9 +498,9 @@
+ XGCValues values;
+ XtTranslations newTranslations;
+ static XtActionsRec redrawActions[] = {
+- {"expose", (XtCallbackProc) redraw_callback},
+- {"select", (XtCallbackProc) popup_again},
+- {"quit", (XtCallbackProc) quit},
++ {"expose", (XtActionProc) redraw_callback},
++ {"select", (XtActionProc) popup_again},
++ {"quit", (XtActionProc) quit},
+ };
+
+ static char *overrideTranslations =
+@@ -498,6 +511,9 @@
+ int dummy;
+ int i;
+
++#ifdef HAVE_GETPWUID
++ struct passwd *pw;
++#endif
+ #ifdef JCONVERT
+ char *locale_name;
+ Locale_ent *p;
+@@ -514,28 +530,40 @@
+ #endif /* !YOUBIN */
+
+ #ifdef YOUBIN
+- if ((prog_name = strrchr(argv[0], '/')) != NULL) {
+- prog_name++;
+- } else {
+- prog_name = argv[0];
+- }
++ if ((prog_name = strrchr(argv[0], '/')) != NULL) {
++ prog_name++;
++ } else {
++ prog_name = argv[0];
++ }
+ #else /* !YOUBIN */
+- if (spoolPath != NULL && spoolPath[0] != '\0')
++ if (spoolPath != NULL && spoolPath[0] != '\0') {
+ strcpy(spool_path, spoolPath);
+- else
++ } else {
+ strcpy(spool_path, SPOOLPATH);
+- if (spool_path[strlen(spool_path) - 1] != '/')
++ }
++ if (spool_path[strlen(spool_path) - 1] != '/') {
+ strcat(spool_path, "/");
++ }
++
+ #ifdef GETENV_MAIL
+- if (getenv("MAIL") != NULL)
++ if (getenv("MAIL") != NULL) {
+ strcpy(spool_path, getenv("MAIL"));
+- else
+-#endif
+-#ifndef NO_CUSERID
+- strcat(spool_path, cuserid(NULL));
+-#else
++ } else {
++#endif /* GETENV_MAIL */
++
++#ifdef HAVE_GETPWUID
++ pw = getpwuid(getuid());
++ strcat(spool_path, pw->pw_name);
++#elif defined(NO_CUSERID)
+ strcat(spool_path, getenv("USER"));
+-#endif
++#else
++ strcat(spool_path, (char *)cuserid(NULL));
++#endif /* NO_CUSERID && HAVE_GETPWUID */
++
++#ifdef GETENV_MAIL
++ }
++#endif /* GETENV_MAIL */
++
+ #endif /* !YOUBIN */
+
+ #ifdef XI18N
+@@ -646,7 +674,7 @@
+ fprintf(stderr, " [-server host]\n");
+ fprintf(stderr, " [-nopreserve]\n");
+ #endif
+-#ifdef SUN_AUDIO
++#if (defined(SUN_AUDIO) || defined(BSD_AUDIO))
+ fprintf(stderr, " [-sndfile audio_file]\n");
+ fprintf(stderr, " [-volume percentage]\n");
+ #endif
+@@ -775,7 +803,7 @@
+ /* Interval timer start */
+ #ifndef YOUBIN
+ polling_id = XtAppAddTimeOut(app_con,
+- (unsigned long) polling_time, Polling, NULL);
++ (unsigned long) polling_time, (XtTimerCallbackProc) Polling, NULL);
+ #else /* YOUBIN */
+ if (server == NULL) {
+ gethostname(serv_name, sizeof(serv_name));
+@@ -931,7 +959,7 @@
+ PopupMailHeader(mail_header);
+ XSync(XtDisplay(toplevel), 0);
+ if (bell == True)
+- beep(XtDisplay(toplevel), 0);
++ beep(XtDisplay(toplevel));
+ /* XBell(XtDisplay(toplevel), 0); */
+ }
+ else if (file_stat.st_size > mail_size) {
+@@ -955,7 +983,8 @@
+ PopupMailHeader(mail_header);
+ XSync(XtDisplay(toplevel), 0);
+ if (bell == True)
+- XBell(XtDisplay(toplevel), 0);
++ beep(XtDisplay(toplevel));
++ /* XBell(XtDisplay(toplevel), 0); */
+ }
+ else {
+ mail_size = file_stat.st_size;
+@@ -982,7 +1011,7 @@
+ /* No arrive */
+
+ polling_id = XtAppAddTimeOut(XtWidgetToApplicationContext(toplevel),
+- (unsigned long) polling_time, Polling, NULL);
++ (unsigned long) polling_time, (XtTimerCallbackProc) Polling, NULL);
+
+ }
+ #endif /* !YOUBIN */
+@@ -1071,7 +1100,7 @@
+ if (popdown == True) {
+ popdown_button = XtCreateManagedWidget("popdown_button", commandWidgetClass, info_base, NULL,
+ ZERO);
+- XtAddCallback(popdown_button, XtNcallback, BreakPopup, (XtPointer) NULL);
++ XtAddCallback(popdown_button, XtNcallback, (XtCallbackProc) BreakPopup, (XtPointer) NULL);
+ }
+ arg_count = 0;
+ XtSetArg(args[arg_count], XtNlabel, head);
+@@ -1147,7 +1176,8 @@
+ PopupMailHeader(mail_header);
+ XSync(XtDisplay(toplevel), 0);
+ if (bell == True)
+- XBell(XtDisplay(toplevel), 0);
++ beep(XtDisplay(toplevel));
++ /* XBell(XtDisplay(toplevel), 0); */
+ }
+ else {
+ mail_size = file_stat.st_size;
+@@ -1169,7 +1199,7 @@
+
+ XtRemoveTimeOut(polling_id);
+ polling_id = XtAppAddTimeOut(XtWidgetToApplicationContext(toplevel),
+- (unsigned long) polling_time, Polling, NULL);
++ (unsigned long) polling_time, (XtTimerCallbackProc) Polling, NULL);
+ }
+ #endif /* !YOUBIN */
+
+@@ -1749,13 +1779,22 @@
+ static void beep (display)
+ Display *display;
+ {
+-#ifdef SUN_AUDIO
++#if defined(SUN_AUDIO) || defined(BSD_AUDIO)
+ int audiofd, filefd;
+- int rn, wn, len;
++ int rn;
++#ifdef SUN_AUDIO
++ int wn, len;
+ unsigned char buf[256];
+ Audio_filehdr *au_hdr;
+ audio_info_t ais;
+-
++#elif defined(BSD_AUDIO)
++ int mixerfd, mixerid, supported;
++ static int bsize;
++ static char *buf;
++ struct stat sbuf;
++ int level, level_tmp;
++#endif
++
+ if (mail_sndfile) {
+ audiofd = open( "/dev/audio", O_WRONLY | O_NDELAY );
+ if (audiofd < 0)
+@@ -1766,6 +1805,7 @@
+ return;
+ }
+
++#ifdef SUN_AUDIO
+ if( ioctl( audiofd, AUDIO_GETINFO, &ais ) )
+ {
+ fprintf(stderr, "%s: Problem retrieving /dev/audio info.\n",
+@@ -1782,6 +1822,24 @@
+ return;
+ }
+
++#elif defined(BSD_AUDIO)
++ /* Open the mixer device */
++ mixerfd = open ("/dev/mixer", O_RDWR, 0);
++ if (mixerfd > 0)
++ {
++ if (volume > MAX_SOUND_VOL)
++ volume = MAX_SOUND_VOL;
++ else if (volume < MIN_SOUND_VOL)
++ volume = MIN_SOUND_VOL;
++ mixerid = SOUND_MIXER_PCM;
++ /* storing volume level */
++ ioctl(mixerfd,MIXER_READ(mixerid),&level_tmp);
++
++ level = (volume << 8) | volume;
++ ioctl(mixerfd,MIXER_WRITE(mixerid),&level);
++ }
++#endif
++
+ filefd = open(mail_sndfile, O_RDONLY);
+ if (filefd < 0)
+ {
+@@ -1791,6 +1849,7 @@
+ return;
+ }
+
++#ifdef SUN_AUDIO
+ /* Read in the audio header */
+ rn = read(filefd, buf, sizeof(Audio_filehdr));
+
+@@ -1841,12 +1900,28 @@
+ usleep(1000);
+ }
+ }
+- close(audiofd);
++#elif defined(BSD_AUDIO)
++ ioctl(audiofd, SNDCTL_DSP_RESET, 0);
++ fstat(filefd, &sbuf);
++ bsize = sbuf.st_size;
++ buf = malloc((u_int)bsize);
++ if ( (rn = read(filefd, buf, bsize)) > 0)
++ write(audiofd, buf, rn);
++ ioctl(audiofd, SNDCTL_DSP_SYNC, 0);
++ free(buf);
++ if (mixerfd > 0)
++ {
++ /* restoring volume level */
++ ioctl(mixerfd,MIXER_WRITE(mixerid),&level_tmp);
++ close(mixerfd);
++ }
++#endif
++ close(audiofd);
+ close(filefd);
+ }
+ else
+- XBell (display, volume);
+-#else /* !SUN_AUDIO */
++ XBell (display, 0);
++#else /* !SUN_AUDIO && !BSD_AUDIO */
+ XBell (display, 0);
+ #endif /* SUN_AUDIO */
+ return;
+@@ -1917,12 +1992,12 @@
+
+ if (popup_time)
+ XtAppAddTimeOut(XtWidgetToApplicationContext(toplevel),
+- (unsigned long) popup_time, BreakPopup, NULL);
++ (unsigned long) popup_time, (XtTimerCallbackProc) BreakPopup, NULL);
+ }
+ }
+ XSync(XtDisplay(toplevel), 0);
+ if (bell == True) {
+- beep(XtDisplay(toplevel), 0);
++ beep(XtDisplay(toplevel));
+ }
+ } else if (mail_size < saved_mail_size){
+ /* No mail */
+@@ -2031,7 +2106,7 @@
+ }
+ if (popup_time)
+ XtAppAddTimeOut(XtWidgetToApplicationContext(toplevel),
+- (unsigned long) popup_time, BreakPopup, NULL);
++ (unsigned long) popup_time, (XtTimerCallbackProc) BreakPopup, NULL);
+ }
+ if (raise == True) {
+ XRaiseWindow(XtDisplay(toplevel), XtWindow(toplevel));