pkgsrc/net/pppd/patches/patch-ad
tron 00fffaadd1 Bring this package closer to building under NetBSD 4.0:
- Escape some question marks to avoid weird GCC warning.
- Fix broken use of "__attributed (__packed__)". Bump package revision
  because this is a code generation issue.
2007-06-11 12:36:23 +00:00

220 lines
5.2 KiB
Text

$NetBSD: patch-ad,v 1.2 2007/06/11 12:36:24 tron Exp $
--- chat/chat.c.orig 2004-02-02 03:36:46.000000000 +0000
+++ chat/chat.c 2007-06-11 13:07:08.000000000 +0100
@@ -147,20 +147,9 @@
"unknown error")
#endif
-/*************** Micro getopt() *********************************************/
-#define OPTION(c,v) (_O&2&&**v?*(*v)++:!c||_O&4?0:(!(_O&1)&& \
- (--c,++v),_O=4,c&&**v=='-'&&v[0][1]?*++*v=='-'\
- &&!v[0][1]?(--c,++v,0):(_O=2,*(*v)++):0))
-#define OPTARG(c,v) (_O&2?**v||(++v,--c)?(_O=1,--c,*v++): \
- (_O=4,(char*)0):(char*)0)
-#define OPTONLYARG(c,v) (_O&2&&**v?(_O=1,--c,*v++):(char*)0)
-#define ARG(c,v) (c?(--c,*v++):(char*)0)
-
-static int _O = 0; /* Internal state */
-/*************** Micro getopt() *********************************************/
-
char *program_name;
+#define BUFFER_SIZE 256
#define MAX_ABORTS 50
#define MAX_REPORTS 50
#define DEFAULT_CHAT_TIMEOUT 45
@@ -198,12 +187,12 @@
#endif
char *abort_string[MAX_ABORTS], *fail_reason = (char *)0,
- fail_buffer[50];
+ fail_buffer[BUFFER_SIZE];
int n_aborts = 0, abort_next = 0, timeout_next = 0, echo_next = 0;
int clear_abort_next = 0;
char *report_string[MAX_REPORTS] ;
-char report_buffer[256] ;
+char report_buffer[BUFFER_SIZE] ;
int n_reports = 0, report_next = 0, report_gathering = 0 ;
int clear_report_next = 0;
@@ -289,12 +278,12 @@
char **argv;
{
int option;
- char *arg;
+ int i;
program_name = *argv;
tzset();
- while ((option = OPTION(argc, argv)) != 0) {
+ while ((option = getopt(argc, argv, ":eEvVf:t:r:sST:U:")) != -1) {
switch (option) {
case 'e':
++echo;
@@ -321,25 +310,24 @@
break;
case 'f':
- if ((arg = OPTARG(argc, argv)) != NULL)
- chat_file = copy_of(arg);
+ if (optarg != NULL)
+ chat_file = copy_of(optarg);
else
usage();
break;
case 't':
- if ((arg = OPTARG(argc, argv)) != NULL)
- timeout = atoi(arg);
+ if (optarg != NULL)
+ timeout = atoi(optarg);
else
usage();
break;
case 'r':
- arg = OPTARG (argc, argv);
- if (arg) {
+ if (optarg) {
if (report_fp != NULL)
fclose (report_fp);
- report_file = copy_of (arg);
+ report_file = copy_of (optarg);
report_fp = fopen (report_file, "a");
if (report_fp != NULL) {
if (verbose)
@@ -351,15 +339,15 @@
break;
case 'T':
- if ((arg = OPTARG(argc, argv)) != NULL)
- phone_num = copy_of(arg);
+ if (optarg != NULL)
+ phone_num = copy_of(optarg);
else
usage();
break;
case 'U':
- if ((arg = OPTARG(argc, argv)) != NULL)
- phone_num2 = copy_of(arg);
+ if (optarg != NULL)
+ phone_num2 = copy_of(optarg);
else
usage();
break;
@@ -369,6 +357,8 @@
break;
}
}
+ argc -= optind;
+ argv += optind;
/*
* Default the report file to the stderr location
*/
@@ -391,17 +381,15 @@
init();
if (chat_file != NULL) {
- arg = ARG(argc, argv);
- if (arg != NULL)
+ if (argc)
usage();
else
do_file (chat_file);
} else {
- while ((arg = ARG(argc, argv)) != NULL) {
- chat_expect(arg);
-
- if ((arg = ARG(argc, argv)) != NULL)
- chat_send(arg);
+ for (i = 0; i < argc; i++) {
+ chat_expect(argv[i]);
+ if (++i < argc)
+ chat_send(argv[i]);
}
}
@@ -508,6 +496,7 @@
#endif
vfmtmsg(line, sizeof(line), fmt, args);
+ va_end(args);
if (to_log)
syslog(LOG_INFO, "%s", line);
if (to_stderr)
@@ -533,6 +522,7 @@
#endif
vfmtmsg(line, sizeof(line), fmt, args);
+ va_end(args);
if (to_log)
syslog(LOG_ERR, "%s", line);
if (to_stderr)
@@ -614,7 +604,7 @@
have_tty_parameters = 1;
t.c_iflag |= IGNBRK | ISTRIP | IGNPAR;
- t.c_oflag = 0;
+ t.c_oflag |= OPOST | ONLCR;
t.c_lflag = 0;
t.c_cc[VERASE] =
t.c_cc[VKILL] = 0;
@@ -1022,11 +1012,11 @@
c &= 0x7F;
if (c < 32)
- sprintf(string, "%s^%c", meta, (int)c + '@');
+ snprintf(string, sizeof(string), "%s^%c", meta, (int)c + '@');
else if (c == 127)
- sprintf(string, "%s^?", meta);
+ snprintf(string, sizeof(string), "%s^?", meta);
else
- sprintf(string, "%s%c", meta, c);
+ snprintf(string, sizeof(string), "%s%c", meta, c);
return (string);
}
@@ -1303,7 +1293,7 @@
if (verbose) {
if (quiet)
- msgf("send (??????)");
+ msgf("send (\?\?\?\?\?\?)");
else
msgf("send (%v)", s);
}
@@ -1445,7 +1435,14 @@
struct tm* tm_now = localtime (&time_now);
strftime (report_buffer, 20, "%b %d %H:%M:%S ", tm_now);
- strcat (report_buffer, report_string[n]);
+#ifdef HAS_STRLFUNCS
+ strlcat(report_buffer, report_string[n],
+ sizeof(report_buffer));
+#else
+ strncat(report_buffer, report_string[n],
+ sizeof(report_buffer)-1);
+ report_buffer[sizeof(report_buffer)-1] = '\0';
+#endif
report_string[n] = (char *) NULL;
report_gathering = 1;
@@ -1491,7 +1488,13 @@
alarm(0);
alarmed = 0;
exit_code = n + 4;
- strcpy(fail_reason = fail_buffer, abort_string[n]);
+#ifdef HAS_STRLFUNCS
+ strlcpy(fail_buffer, abort_string[n], sizeof(fail_buffer));
+#else
+ strncpy(fail_buffer, abort_string[n], sizeof(fail_buffer)-1);
+ fail_buffer[sizeof(fail_buffer)-1] = '\0';
+#endif
+ fail_reason = fail_buffer;
return (0);
}
}