From a1a26e73bdf7e64c86b1dbf583c14f2d6a8767e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20G=C3=B6rig?= Date: Wed, 6 Apr 2011 09:40:34 +0200 Subject: [PATCH] reverted last change (#681898) --- minicom-2.5-rh.patch | 162 +++++++++++++++++++++++++++++++++++++++++++ minicom.spec | 19 +++-- 2 files changed, 174 insertions(+), 7 deletions(-) create mode 100644 minicom-2.5-rh.patch diff --git a/minicom-2.5-rh.patch b/minicom-2.5-rh.patch new file mode 100644 index 0000000..fcfe035 --- /dev/null +++ b/minicom-2.5-rh.patch @@ -0,0 +1,162 @@ +diff --git a/src/main.c b/src/main.c +index bc4db89..8e68e2c 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -154,16 +154,22 @@ void term_socket_close(void) + int open_term(int doinit, int show_win_on_error, int no_msgs) + { + struct stat stt; ++#ifdef NOTNOW + union { + char bytes[128]; + int kermit; + } buf; +- int fd, n = 0; ++ int fd; + int pid; ++#endif ++ int rc; ++ int n = 0; + #ifdef HAVE_ERRNO_H + int s_errno; + #endif + ++#ifdef NOTNOW ++ + /* First see if the lock file directory is present. */ + if (P_LOCK[0] && stat(P_LOCK, &stt) == 0) { + +@@ -215,6 +221,47 @@ int open_term(int doinit, int show_win_on_error, int no_msgs) + if (doinit > 0) + lockfile_create(); + ++#else ++ lockfile[0] = 0; ++ if (doinit > 0) { ++#ifdef USE_SOCKET ++ if (strncmp(dial_tty, SOCKET_PREFIX, strlen(SOCKET_PREFIX)) == 0) { ++ if (stat(dial_tty+strlen(SOCKET_PREFIX), &stt) == 0 && ++ S_ISSOCK(stt.st_mode)) { ++ rc = 0; ++ } else { ++ rc = 1; ++ if (!no_msgs) ++ fprintf(stderr, _("File %s is not a socket.\n"), ++ dial_tty+strlen(SOCKET_PREFIX)); ++ } ++ } else { ++#endif ++ rc = ttylock(dial_tty); ++ if(!no_msgs) { ++ if (rc < 0) { ++ if (access(dial_tty, W_OK) == -1) ++ fprintf(stderr, _("Device %s access failed: %s.\n"), ++ dial_tty, strerror(errno)); ++ else ++ fprintf(stderr, _("Device %s lock failed: %s.\n"), ++ dial_tty, strerror(-rc)); ++ } else if (rc > 0) { ++ fprintf(stderr, _("Device %s is locked.\n"), dial_tty); ++ } ++ } ++#ifdef USE_SOCKET ++ } ++#endif ++ if (rc == 0) { ++ snprintf(lockfile, sizeof(lockfile), "%s", dial_tty); ++ } else { ++ if (!no_msgs && stdwin) mc_wclose(stdwin, 1); ++ return(-1); ++ } ++ } ++#endif ++ + /* Run a special program to disable callin if needed. */ + if (doinit > 0 && P_CALLOUT[0]) { + if (fastsystem(P_CALLOUT, NULL, NULL, NULL) < 0) { +@@ -232,7 +276,6 @@ int open_term(int doinit, int show_win_on_error, int no_msgs) + signal(SIGALRM, get_alrm); + alarm(4); + #ifdef USE_SOCKET +-#define SOCKET_PREFIX "unix#" + portfd_is_socket = portfd_is_connected = 0; + if (strncmp(dial_tty, SOCKET_PREFIX, strlen(SOCKET_PREFIX)) == 0) { + portfd_is_socket = 1; +diff --git a/src/minicom.c b/src/minicom.c +index 7780ff7..8b26f0d 100644 +--- a/src/minicom.c ++++ b/src/minicom.c +@@ -1569,8 +1569,7 @@ dirty_goto: + mc_wclose(st, 0); + mc_wclose(stdwin, 1); + keyboard(KUNINSTALL, 0); +- if (lockfile[0]) +- unlink(lockfile); ++ lockfile_remove(); + close(portfd); + + if (quit != NORESET && P_CALLIN[0]) +diff --git a/src/minicom.h b/src/minicom.h +index 309d54a..83f3fca 100644 +--- a/src/minicom.h ++++ b/src/minicom.h +@@ -34,10 +34,14 @@ + #include "libport.h" + + #include ++#include ++#include + + #ifdef USE_SOCKET + #include + #include ++ ++#define SOCKET_PREFIX "unix#" + #endif + + /* +@@ -82,7 +86,7 @@ EXTERN int tempst; /* Status line is temporary */ + EXTERN int escape; /* Escape code. */ + EXTERN int disable_online_time; /* disable online time display */ + +-EXTERN char lockfile[128]; /* UUCP lock file of terminal */ ++EXTERN char lockfile[PATH_MAX]; /* UUCP lock file of terminal */ + EXTERN char homedir[256]; /* Home directory of user */ + EXTERN char logfname[PARS_VAL_LEN]; /* Name of the logfile */ + EXTERN char username[16]; /* Who is using minicom? */ +diff --git a/src/updown.c b/src/updown.c +index 24531a2..23194e4 100644 +--- a/src/updown.c ++++ b/src/updown.c +@@ -441,12 +441,14 @@ void updown(int what, int nr) + + void lockfile_remove(void) + { +- if (lockfile[0]) +- unlink(lockfile); ++ if (lockfile[0] && strncmp(dial_tty, SOCKET_PREFIX, strlen(SOCKET_PREFIX)) != 0) ++ ttyunlock(lockfile); + } + + void lockfile_create(void) + { ++ int rc; ++#ifdef NOTNOW + int fd, n; + + if (!lockfile[0]) +@@ -468,6 +470,14 @@ void lockfile_create(void) + close(fd); + } + umask(n); ++#else ++ if (strncmp(dial_tty, SOCKET_PREFIX, strlen(SOCKET_PREFIX)) != 0) { ++ rc = ttylock(lockfile); ++ if (rc) { ++ werror(_("Cannot lock device!")); ++ } ++ } ++#endif + } + + /* diff --git a/minicom.spec b/minicom.spec index b822f26..a13186c 100644 --- a/minicom.spec +++ b/minicom.spec @@ -1,7 +1,7 @@ Summary: A text-based modem control and terminal emulation program Name: minicom Version: 2.5 -Release: 5%{?dist} +Release: 6%{?dist} URL: http://alioth.debian.org/projects/minicom/ License: GPLv2+ Group: Applications/Communications @@ -12,9 +12,10 @@ Requires: lockdev lrzsz Source0: http://alioth.debian.org/frs/download.php/3487/minicom-2.5.tar.gz -Patch1: minicom-2.5-non-readable-dir.patch -Patch2: minicom-2.5-man-minicom.patch -Patch3: minicom-2.5-man-runscript.patch +Patch1: minicom-2.5-rh.patch +Patch2: minicom-2.5-non-readable-dir.patch +Patch3: minicom-2.5-man-minicom.patch +Patch4: minicom-2.5-man-runscript.patch %description Minicom is a simple text-based modem control and terminal emulation @@ -24,15 +25,16 @@ language, and other features. %prep %setup -q -%patch1 -p1 -b .dir -%patch2 -p1 -b .man +%patch1 -p1 -b .rh +%patch2 -p1 -b .dir %patch3 -p1 -b .man +%patch4 -p1 -b .man cp -pr doc doc_ rm -f doc_/Makefile* %build -%configure --enable-lock-dir=%{_localstatedir}/lock/lockdev +%configure make %{?_smp_mflags} %install @@ -56,6 +58,9 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man1/* %changelog +* Wed Apr 6 2011 Jan Görig 2.5-6 +- reverted last change (#681898) + * Wed Mar 9 2011 Jan Görig 2.5-5 - dropped rh patch because /var/lock/lockdev is now world writeable