Port of merge request 49 to newlib
Wayne Porter made !49 which added Cygwin support to the master branch This is the port of those changes to newlib
This commit is contained in:
parent
aab30a0aad
commit
d8fb86dbc5
1
.gitignore
vendored
1
.gitignore
vendored
@ -64,3 +64,4 @@ watch
|
||||
*~
|
||||
*.log
|
||||
*.sum
|
||||
*.exe
|
||||
|
103
Makefile.am
103
Makefile.am
@ -1,6 +1,7 @@
|
||||
CYGWINFLAGS =
|
||||
if CYGWIN
|
||||
CYGWINFLAGS += -lintl
|
||||
CYGWINFLAGS += -lintl
|
||||
usrbin_exec_PROGRAMS =
|
||||
endif
|
||||
|
||||
AM_CPPFLAGS = \
|
||||
@ -24,8 +25,21 @@ SUBDIRS = \
|
||||
AM_CFLAGS = -Iproc
|
||||
LDADD = ./proc/libprocps.la $(CYGWINFLAGS)
|
||||
|
||||
transform = s/pscommand/ps/; $(program_transform_name)
|
||||
if CYGWIN
|
||||
AM_LDFLAGS += ./proc/libprocps.la $(CYGWINFLAGS)
|
||||
endif
|
||||
|
||||
transform =
|
||||
|
||||
if !CYGWIN
|
||||
transform += s/pscommand/ps/; $(program_transform_name)
|
||||
sbin_PROGRAMS = \
|
||||
sysctl
|
||||
else
|
||||
transform += s/pscommand/procps/; $(program_transform_name)
|
||||
endif
|
||||
|
||||
if !CYGWIN
|
||||
bin_PROGRAMS = \
|
||||
ps/pscommand \
|
||||
free \
|
||||
@ -37,9 +51,17 @@ bin_PROGRAMS = \
|
||||
uptime \
|
||||
vmstat \
|
||||
w
|
||||
|
||||
sbin_PROGRAMS = \
|
||||
sysctl
|
||||
else
|
||||
usrbin_exec_PROGRAMS += \
|
||||
ps/pscommand \
|
||||
free \
|
||||
pgrep \
|
||||
pkill \
|
||||
pmap \
|
||||
uptime \
|
||||
vmstat \
|
||||
w
|
||||
endif
|
||||
|
||||
lib_LTLIBRARIES = \
|
||||
proc/libprocps.la
|
||||
@ -49,14 +71,9 @@ dist_man_MANS = \
|
||||
pgrep.1 \
|
||||
pkill.1 \
|
||||
pmap.1 \
|
||||
pwdx.1 \
|
||||
sysctl.8 \
|
||||
sysctl.conf.5 \
|
||||
tload.1 \
|
||||
uptime.1 \
|
||||
vmstat.8 \
|
||||
w.1 \
|
||||
ps/ps.1 \
|
||||
doc/libproc.3 \
|
||||
doc/procps_linux_version.3 \
|
||||
doc/procps_pids_new.3 \
|
||||
@ -70,6 +87,15 @@ dist_man_MANS = \
|
||||
doc/procps_uptime_sprint.3 \
|
||||
doc/procps_uptime_sprint_short.3
|
||||
|
||||
if !CYGWIN
|
||||
dist_man_MANS += \
|
||||
pwdx.1 \
|
||||
tload.1 \
|
||||
sysctl.8 \
|
||||
sysctl.conf.5 \
|
||||
ps/ps.1
|
||||
endif
|
||||
|
||||
EXTRA_DIST = \
|
||||
.version \
|
||||
autogen.sh \
|
||||
@ -78,18 +104,26 @@ EXTRA_DIST = \
|
||||
misc/git-version-gen \
|
||||
Documentation/CodingStyle.md \
|
||||
Documentation/TODO \
|
||||
sysctl.conf \
|
||||
ps/HACKING \
|
||||
ps/regression \
|
||||
$(DIST_MAN_POTS)
|
||||
|
||||
if !CYGWIN
|
||||
EXTRA_DIST += \
|
||||
sysctl.conf
|
||||
endif
|
||||
|
||||
procpsngdir = $(docdir)
|
||||
dist_procpsng_DATA = \
|
||||
Documentation/bugs.md \
|
||||
Documentation/FAQ
|
||||
|
||||
if BUILD_PIDOF
|
||||
if !CYGWIN
|
||||
bin_PROGRAMS += pidof
|
||||
else
|
||||
usrbin_exec_PROGRAMS += pidof
|
||||
endif
|
||||
dist_man_MANS += pidof.1
|
||||
pidof_SOURCES = pidof.c lib/fileutils.c
|
||||
else
|
||||
@ -97,7 +131,12 @@ else
|
||||
endif
|
||||
|
||||
if BUILD_KILL
|
||||
if CYGWIN
|
||||
transform += ;s/^kill/prockill/; $(program_transform_name)
|
||||
usrbin_exec_PROGRAMS += kill
|
||||
else
|
||||
bin_PROGRAMS += kill
|
||||
endif
|
||||
dist_man_MANS += kill.1
|
||||
kill_SOURCES = kill.c lib/strutils.c lib/fileutils.c lib/signals.c
|
||||
kill_LDADD =
|
||||
@ -106,16 +145,27 @@ else
|
||||
endif
|
||||
|
||||
if WITH_NCURSES
|
||||
if !CYGWIN
|
||||
bin_PROGRAMS += \
|
||||
slabtop \
|
||||
watch \
|
||||
top/top
|
||||
else
|
||||
usrbin_exec_PROGRAMS += \
|
||||
watch \
|
||||
top/top
|
||||
endif
|
||||
|
||||
dist_man_MANS += \
|
||||
slabtop.1 \
|
||||
watch.1 \
|
||||
top/top.1
|
||||
if !CYGWIN
|
||||
bin_PROGRAMS += \
|
||||
slabtop
|
||||
dist_man_MANS += \
|
||||
slabtop.1
|
||||
slabtop_SOURCES = slabtop.c lib/strutils.c lib/fileutils.c
|
||||
slabtop_LDADD = $(LDADD) @NCURSES_LIBS@
|
||||
endif
|
||||
watch_SOURCES = watch.c lib/strutils.c lib/fileutils.c
|
||||
watch_LDADD = @WATCH_NCURSES_LIBS@ $(CYGWINFLAGS)
|
||||
top_top_SOURCES = \
|
||||
@ -126,16 +176,22 @@ top_top_SOURCES = \
|
||||
lib/fileutils.c \
|
||||
lib/signals.c
|
||||
if CYGWIN
|
||||
top_top_SOURCES += lib/strverscmp.c
|
||||
top_top_SOURCES += lib/strverscmp.c
|
||||
endif
|
||||
|
||||
top_top_LDADD = $(LDADD) @NCURSES_LIBS@ $(DL_LIB)
|
||||
endif
|
||||
|
||||
if BUILD_SKILL
|
||||
if !CYGWIN
|
||||
bin_PROGRAMS += \
|
||||
skill \
|
||||
snice
|
||||
else
|
||||
usrbin_exec_PROGRAMS += \
|
||||
skill \
|
||||
snice
|
||||
endif
|
||||
skill_SOURCES = skill.c lib/strutils.c lib/fileutils.c lib/signals.c
|
||||
snice_SOURCES = skill.c lib/strutils.c lib/fileutils.c lib/signals.c
|
||||
dist_man_MANS += \
|
||||
@ -151,10 +207,12 @@ free_SOURCES = free.c lib/strutils.c lib/fileutils.c
|
||||
pgrep_SOURCES = pgrep.c lib/fileutils.c lib/signals.c
|
||||
pkill_SOURCES = pgrep.c lib/fileutils.c lib/signals.c
|
||||
pmap_SOURCES = pmap.c lib/fileutils.c
|
||||
if !CYGWIN
|
||||
pwdx_SOURCES = pwdx.c lib/fileutils.c
|
||||
pwdx_LDADD= $(CYGWINFLAGS)
|
||||
sysctl_SOURCES = sysctl.c lib/fileutils.c
|
||||
sysctl_LDADD=
|
||||
endif
|
||||
tload_SOURCES = tload.c lib/strutils.c lib/fileutils.c
|
||||
uptime_SOURCES = uptime.c lib/fileutils.c
|
||||
vmstat_SOURCES = vmstat.c lib/strutils.c lib/fileutils.c
|
||||
@ -284,9 +342,26 @@ proc_test_version_LDADD = proc/libprocps.la
|
||||
lib_test_strtod_nol_SOURCES = lib/test_strtod_nol.c lib/strutils.c
|
||||
lib_test_strtod_nol_LDADD = $(CYGWINFLAGS)
|
||||
|
||||
if CYGWIN
|
||||
skill_LDADD = $(CYGWINFLAGS)
|
||||
kill_LDADD = $(CYGWINFLAGS)
|
||||
free_LDADD = $(CYGWINFLAGS)
|
||||
pgrep_LDADD = $(CYGWINFLAGS)
|
||||
pkill_LDADD = $(CYGWINFLAGS)
|
||||
pidof_LDADD = $(CYGWINFLAGS)
|
||||
pmap_LDADD = $(CYGWINFLAGS)
|
||||
snice_LDADD = $(CYGWINFLAGS)
|
||||
tload_LDADD = $(CYGWINFLAGS)
|
||||
uptime_LDADD = $(CYGWINFLAGS)
|
||||
w_LDADD = $(CYGWINFLAGS)
|
||||
vmstat_LDADD = $(CYGWINFLAGS)
|
||||
endif
|
||||
|
||||
if EXAMPLE_FILES
|
||||
if !CYGWIN
|
||||
sysconf_DATA = sysctl.conf
|
||||
endif
|
||||
endif
|
||||
|
||||
BUILT_SOURCES = $(top_srcdir)/.version
|
||||
|
||||
|
21
configure.ac
21
configure.ac
@ -70,6 +70,27 @@ AC_FUNC_REALLOC
|
||||
AC_FUNC_STRCOLL
|
||||
AC_FUNC_STRTOD
|
||||
|
||||
usrbin_execdir='${exec_prefix}/bin'
|
||||
AC_SUBST([usrbin_execdir])
|
||||
|
||||
if test "x$host_os" = xcygwin
|
||||
then
|
||||
prefix=/usr
|
||||
sysconfdir='${prefix}/etc'
|
||||
libexecdir='${prefix}/lib'
|
||||
localstatedir='${prefix}/var'
|
||||
datadir='${prefix}/share'
|
||||
mandir='${prefix}/share/man'
|
||||
infodir='${prefix}/share/info'
|
||||
AC_SUBST([prefix])
|
||||
AC_SUBST([sysconfdir])
|
||||
AC_SUBST([libexecdir])
|
||||
AC_SUBST([localstatedir])
|
||||
AC_SUBST([datadir])
|
||||
AC_SUBST([mandir])
|
||||
AC_SUBST([infodir])
|
||||
fi
|
||||
|
||||
AM_GNU_GETTEXT_VERSION([0.14.1])
|
||||
AM_GNU_GETTEXT([external])
|
||||
if test -d "$srcdir/po"
|
||||
|
@ -202,15 +202,25 @@ int main(int argc, char *argv[]){
|
||||
/* Try to guess the device name (useful until /proc/PID/tty is added) */
|
||||
static int guess_name(char *restrict const buf, unsigned maj, unsigned min){
|
||||
struct stat sbuf;
|
||||
#ifndef __CYGWIN__
|
||||
int t0, t1;
|
||||
#endif
|
||||
unsigned tmpmin = min;
|
||||
|
||||
switch(maj){
|
||||
case 3: /* /dev/[pt]ty[p-za-o][0-9a-z] is 936 */
|
||||
if(tmpmin > 255) return 0; // should never happen; array index protection
|
||||
#ifdef __CYGWIN__
|
||||
sprintf(buf, "dev/cons%d", tmpmin);
|
||||
/* Skip stat call. The reason is that cons devices are local to
|
||||
* the processes running in that console. Calling stat from another
|
||||
* console or pty will return -1. */
|
||||
return 1;
|
||||
#else
|
||||
t0 = "pqrstuvwxyzabcde"[tmpmin>>4];
|
||||
t1 = "0123456789abcdef"[tmpmin&0x0f];
|
||||
sprintf(buf, "/dev/tty%c%c", t0, t1);
|
||||
#endif
|
||||
break;
|
||||
case 4:
|
||||
if(min<64){
|
||||
@ -235,8 +245,12 @@ static int guess_name(char *restrict const buf, unsigned maj, unsigned min){
|
||||
case 78: sprintf(buf, "/dev/ttyM%d", min); break; /* conflict */
|
||||
case 105: sprintf(buf, "/dev/ttyV%d", min); break;
|
||||
case 112: sprintf(buf, "/dev/ttyM%d", min); break; /* conflict */
|
||||
#ifdef __CYGWIN__
|
||||
case 136: sprintf(buf, "/dev/pty%d", min); break;
|
||||
#else
|
||||
/* 136 ... 143 are /dev/pts/0, /dev/pts/1, /dev/pts/2 ... */
|
||||
case 136 ... 143: sprintf(buf, "/dev/pts/%d", min+(maj-136)*256); break;
|
||||
#endif
|
||||
case 148: sprintf(buf, "/dev/ttyT%d", min); break;
|
||||
case 154: sprintf(buf, "/dev/ttySR%d", min); break;
|
||||
case 156: sprintf(buf, "/dev/ttySR%d", min+256); break;
|
||||
@ -284,6 +298,30 @@ static int link_name(char *restrict const buf, unsigned maj, unsigned min, int p
|
||||
return 1;
|
||||
}
|
||||
|
||||
#ifdef __CYGWIN__
|
||||
/* Cygwin keeps the name to the controlling tty in a virtual file called
|
||||
/proc/PID/ctty, including a trailing LF (sigh). */
|
||||
static int ctty_name(char *restrict const buf, int pid) {
|
||||
char path[32];
|
||||
FILE *fp;
|
||||
char *lf;
|
||||
sprintf (path, "/proc/%d/ctty", pid); /* often permission denied */
|
||||
fp = fopen (path, "r");
|
||||
if (!fp)
|
||||
return 0;
|
||||
if (!fgets (buf,TTY_NAME_SIZE,fp))
|
||||
{
|
||||
fclose (fp);
|
||||
return 0;
|
||||
}
|
||||
fclose (fp);
|
||||
lf = strchr (buf, '\n');
|
||||
if (lf)
|
||||
*lf = (lf == buf ? '?' : '\0');
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* number --> name */
|
||||
unsigned dev_to_tty(char *restrict ret, unsigned chop, dev_t dev_t_dev, int pid, unsigned int flags) {
|
||||
static char buf[TTY_NAME_SIZE];
|
||||
@ -291,6 +329,9 @@ unsigned dev_to_tty(char *restrict ret, unsigned chop, dev_t dev_t_dev, int pid,
|
||||
unsigned dev = dev_t_dev;
|
||||
unsigned i = 0;
|
||||
int c;
|
||||
#ifdef __CYGWIN__
|
||||
if( ctty_name(tmp, pid )) goto abbrev;
|
||||
#endif
|
||||
if(dev == 0u) goto no_tty;
|
||||
if(driver_name(tmp, MAJOR_OF(dev), MINOR_OF(dev) )) goto abbrev;
|
||||
if( link_name(tmp, MAJOR_OF(dev), MINOR_OF(dev), pid, "fd/2" )) goto abbrev;
|
||||
|
@ -29,6 +29,9 @@
|
||||
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#ifdef __CYGWIN__
|
||||
#include <sys/param.h>
|
||||
#endif
|
||||
#include "alloc.h"
|
||||
#include "version.h"
|
||||
#include "sysinfo.h" /* include self to verify prototypes */
|
||||
@ -74,7 +77,9 @@ static char buf[8192];
|
||||
#define SET_IF_DESIRED(x,y) do{ if(x) *(x) = (y); }while(0)
|
||||
|
||||
/* return minimum of two values */
|
||||
#ifndef __CYGWIN__
|
||||
#define MIN(x,y) ((x) < (y) ? (x) : (y))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* procps_hertz_get:
|
||||
|
5
skill.c
5
skill.c
@ -570,6 +570,11 @@ int main(int argc, char ** argv)
|
||||
else if (strcmp(program_invocation_short_name, "snice") == 0 ||
|
||||
strcmp(program_invocation_short_name, "lt-snice") == 0)
|
||||
program = PROG_SNICE;
|
||||
#ifdef __CYGWIN__
|
||||
else if (strcmp(program_invocation_short_name, "prockill") == 0 ||
|
||||
strcmp(program_invocation_short_name, "lt-prockill") == 0)
|
||||
program = PROG_KILL;
|
||||
#endif
|
||||
|
||||
switch (program) {
|
||||
case PROG_SNICE:
|
||||
|
@ -13,9 +13,12 @@ if LINUX
|
||||
# temporarily disabled on other than linux systems, see commit
|
||||
# 3d807ae853b8b4264da156065b34f1447658a8ba
|
||||
DEJATOOL += \
|
||||
pmap \
|
||||
pmap
|
||||
if !CYGWIN
|
||||
DEJATOOL += \
|
||||
slabtop \
|
||||
sysctl
|
||||
endif
|
||||
|
||||
if BUILD_KILL
|
||||
DEJATOOL += kill
|
||||
@ -48,8 +51,11 @@ EXTRA_DIST = \
|
||||
ps.test/ps_personality.exp \
|
||||
ps.test/ps_sched_batch.exp \
|
||||
pwdx.test/pwdx.exp \
|
||||
slabtop.test/slabtop.exp \
|
||||
sysctl.test/sysctl_read.exp \
|
||||
uptime.test/uptime.exp \
|
||||
vmstat.test/vmstat.exp \
|
||||
w.test/w.exp
|
||||
if !CYGWIN
|
||||
EXTRA_DIST += \
|
||||
slabtop.test/slabtop.exp \
|
||||
sysctl.test/sysctl_read.exp
|
||||
endif
|
||||
|
Loading…
Reference in New Issue
Block a user