openbsd-ports/japanese/Wnn/patches/patch-Wnn_uum_jhlp_c
espie bc3d572bec Handle window size changes.
Don't change the terminal name.
2000-04-20 22:59:21 +00:00

249 lines
6.6 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

$OpenBSD: patch-Wnn_uum_jhlp_c,v 1.2 2000/04/20 22:59:21 espie Exp $
--- Wnn/uum/jhlp.c.orig Sun Apr 16 02:31:48 2000
+++ Wnn/uum/jhlp.c Sun Apr 16 14:06:49 2000
@@ -80,6 +80,9 @@ struct passwd *getpwuid();
jmp_buf kk_env;
+#if (defined(__unix__) || defined(unix)) && !defined(USG)
+#include <sys/param.h>
+#endif
#ifdef SYSVR2
# include <sys/param.h>
#endif /* SYSVR2 */
@@ -166,14 +169,14 @@ char **argv;
flow_control = FLOW_CONTROL;
code_trans = default_code_trans;
- strcpy(username, getpwuid(getuid())->pw_name);
+ strlcpy(username, getpwuid(getuid())->pw_name, PATHNAMELEN);
if((name = getenv(WNN_USERNAME_ENV)) != NULL){
- strcpy(username, name);
+ strlcpy(username, name, PATHNAMELEN);
}
for (i = 1; i < argc;) {
if (!strcmp(argv[i++], "-L")) {
if (i >= argc || argv[i][0] == '-') default_usage();
- strcpy(lang_dir, argv[i++]);
+ strlcpy(lang_dir, argv[i++], 32);
for (;i < argc; i++) {
argv[i - 2] = argv[i];
}
@@ -185,12 +188,7 @@ char **argv;
if(*lang_dir == '\0') {
if ((p = getenv("LANG")) != NULL) {
- if (strlen(p) >= 4) {
- strncpy(lang_dir, p, 5);
- lang_dir[5] = '\0';
- } else {
- strcpy(lang_dir, p);
- }
+ strlcpy(lang_dir, p, 5);
}
}
for (f = function_db; *lang_dir && f && f->lang; f++) {
@@ -233,8 +231,8 @@ char **argv;
server_env = WNN_DEF_SERVER_ENV;
}
if(name = getenv(server_env)) {
- strcpy(def_servername, name);
- strcpy(def_reverse_servername, name);
+ strlcpy(def_servername, name, PATHNAMELEN);
+ strlcpy(def_reverse_servername, name, PATHNAMELEN);
}
}
@@ -263,9 +261,11 @@ char **argv;
#if defined(BSD42) && !defined(DGUX)
+#if !(defined(BSD) && (BSD >= 199306))
if (saveutmp() < 0) {
puts("Can't save utmp\n");
}
+#endif
#endif /* BSD42 */
@@ -492,7 +492,7 @@ static int do_X_opt()
static int do_k_opt()
{
- strcpy(uumkey_name_in_uumrc, optarg);
+ strlcpy(uumkey_name_in_uumrc, optarg, PATHNAMELEN);
if (*uumkey_name_in_uumrc == '\0') {
return -1;
}
@@ -502,7 +502,7 @@ static int do_k_opt()
static int do_c_opt()
{
- strcpy(convkey_name_in_uumrc, optarg);
+ strlcpy(convkey_name_in_uumrc, optarg, PATHNAMELEN);
if (*convkey_name_in_uumrc == '\0') {
return -1;
}
@@ -512,7 +512,7 @@ static int do_c_opt()
static int do_r_opt()
{
- strcpy(rkfile_name_in_uumrc, optarg);
+ strlcpy(rkfile_name_in_uumrc, optarg, PATHNAMELEN);
if (*rkfile_name_in_uumrc == '\0') {
return -1;
}
@@ -528,8 +528,8 @@ static int do_l_opt()
static int do_D_opt()
{
- strcpy(def_servername, optarg);
- strcpy(def_reverse_servername, optarg);
+ strlcpy(def_servername, optarg, PATHNAMELEN);
+ strlcpy(def_reverse_servername, optarg, PATHNAMELEN);
if (*def_servername == '\0') {
return -1;
}
@@ -538,7 +538,7 @@ static int do_D_opt()
static int do_n_opt()
{
- strcpy(username, optarg);
+ strlcpy(username, optarg, PATHNAMELEN);
if (*username == '\0') {
return -1;
}
@@ -581,14 +581,14 @@ char **argv;
#endif /* SYSVR2 */
extern char *index();
- strcpy(ostr, default_getoptstr);
- strcat(ostr, lang_db->getoptstr);
+ strlcpy(ostr, default_getoptstr, sizeof(ostr));
+ strlcat(ostr, lang_db->getoptstr, sizeof(ostr));
while ((c = getopt(argc, argv, ostr)) != EOF) {
if (!(p = index(default_ostr, c)) || (*do_opt[p - default_ostr])() < 0) {
if (!(p = index(lang_db->ostr, c)) ||
(*lang_db->do_opt[p - lang_db->ostr])() < 0) {
- strcpy(ostr, default_ostr);
- strcat(ostr, lang_db->ostr);
+ strlcpy(ostr, default_ostr, sizeof(ostr));
+ strlcat(ostr, lang_db->ostr, sizeof(ostr));
usage(ostr);
}
}
@@ -771,7 +771,12 @@ chld_handler()
#endif
int pid;
- if ((pid = wait3(&status, WNOHANG | WUNTRACED, NULL)) == child_id) {
+/*
+ * Remove warning.
+ * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/20
+ */
+/* if ((pid = wait3(&status, WNOHANG | WUNTRACED, NULL)) == child_id) { */
+ if ((pid = wait3((int *)&status, WNOHANG | WUNTRACED, NULL)) == child_id) {
if (WIFSTOPPED(status)) {
#ifdef SIGCONT
kill(pid, SIGCONT);
@@ -1140,9 +1145,11 @@ char **argv;
setpgrp(0, pid);
#endif /* BSD42 */
+#if !(defined(BSD) && (BSD >= 199306))
if (setutmp(ttypfd) == ERROR) {
puts("Can't set utmp.");
}
+#endif
#ifdef linux
setsid();
@@ -1446,11 +1453,23 @@ open_ttyp()
close(open(ttyname(ttypfd), O_WRONLY, 0));
*/
#endif /* defined(SYSVR2) && !defined(linux) */
+#ifdef __OpenBSD__
+ {
+ struct winsize win;
+
+ if (ioctl(ttyfd, TIOCGWINSZ, &win) != -1) {
+ win.ws_row = crow;
+ win.ws_col = maxlength;
+ ioctl(ttypfd, TIOCSWINSZ, &win);
+ }
+ }
+#else
#ifdef TIOCSSIZE
pty_rowcol.ts_lines = crow; /* instead of lines */
pty_rowcol.ts_cols = maxlength; /* instead of columns */
ioctl(ttypfd, TIOCSSIZE, &pty_rowcol);
#endif /* TIOCSSIZE */
+#endif
}
/** pty <20>Υ<EFBFBD><CEA5><EFBFBD><EFBFBD>ץ<EFBFBD> */
@@ -1562,9 +1581,11 @@ do_end()
perror(prog);
}
+#if !(defined(BSD) && (BSD >= 199306))
if (resetutmp(ttypfd) == ERROR) {
printf("Can't reset utmp.");
}
+#endif
#ifdef TIOCSSIZE
pty_rowcol.ts_lines = 0;
pty_rowcol.ts_cols = 0;
@@ -1636,7 +1657,16 @@ ptyname(b, pty, no)
char *b, *pty;
int no;
{
+/*
+ * Change pseudo-devices.
+ * Because FreeBSD's master pseudo-devices are pty[p-sP-S][0-9a-v].
+ * Patched by Hidekazu Kuroki(hidekazu@cs.titech.ac.jp) 1996/8/20
+ */
+#if (defined(BSD) && (BSD >= 199306)) /* 4.4BSD-Lite by Taoka */
+ sprintf(b, "%s%1c%1c", pty, "pqrsPQRS"[(no >> 5)], ((no & 0x1f > 9)? 'a' : '0') + (no & 0x1f));
+#else /* ! 4.4BSD-Lite */
sprintf(b, "%s%1c%1x", pty, 'p' + (no >> 4), no & 0x0f);
+#endif /* ! 4.4BSD-Lite */
}
#endif /* !sgi */
@@ -1755,14 +1785,14 @@ change_size()
if ((i = win.ws_row) != 0) {
crow = Term_RowWidth = i - conv_lines;
-#ifdef linux
+#if defined(linux) || defined(__OpenBSD__)
win.ws_row = crow;
#endif
}
if ((i = win.ws_col) != 0) {
maxlength = Term_LineWidth = i;
}
-#ifdef linux
+#if defined(linux) || defined(__OpenBSD__)
ioctl(ttypfd, TIOCSWINSZ, &win);
#else /* linux */
#ifdef TIOCSSIZE
@@ -1770,7 +1800,8 @@ change_size()
pty_rowcol.ts_cols = maxlength; /* instead of columns */
ioctl(ttypfd, TIOCSSIZE, &pty_rowcol);
#endif /* TIOCSSIZE */
-#ifdef sun /* When your machine needs SIGWINCH, add your machine */
+#endif
+#if defined(sun) || defined(__OpenBSD__) /* When your machine needs SIGWINCH, add your machine */
{
int grp;
ioctl(ptyfd, TIOCGPGRP, &grp);
@@ -1781,7 +1812,6 @@ change_size()
#endif
}
#endif /* sun */
-#endif /* linux */
set_scroll_region(0, crow - 1);
if (henkan_off_flag) {