mirror of
https://github.com/openbsd/xenocara.git
synced 2025-12-09 18:59:00 +00:00
Update to xeyes 1.3.0
This commit is contained in:
@@ -1,3 +1,91 @@
|
||||
commit 637b948ec83fd61a8ee59a9d8ea9f363f74af0df
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Thu Jul 13 15:54:29 2023 -0700
|
||||
|
||||
xeyes 1.3.0
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 6f6c975d2cdc1f615f83576c9d1f828e1cdabda3
|
||||
Author: Serge Bazanski <q3k@q3k.org>
|
||||
Date: Sun May 28 14:21:56 2023 +0200
|
||||
|
||||
Implement multi-ocular support, add biblical example
|
||||
|
||||
This removes the assumption that an xeyes instance displays just a pair
|
||||
of eyes, and instead allows future developers to implement different
|
||||
kinds of ocular layouts.
|
||||
|
||||
Currently, the ocular layout system only allows for specifying offsets,
|
||||
but a future change might also make different parts of the eye geometry
|
||||
configurable: size of different elements, padding, etc.
|
||||
|
||||
Signed-off-by: Serge Bazanski <q3k@q3k.org>
|
||||
|
||||
commit f30ef4e0f3e464f6304bdc85d28ebec0c2ba5e4f
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Fri Feb 10 11:51:01 2023 -0800
|
||||
|
||||
Print which argument was unknown before giving usage message
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit e7a54da926969631340942c5f850dd196a0df97b
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sat Feb 4 14:35:07 2023 -0800
|
||||
|
||||
Add -help & -version options
|
||||
|
||||
Processed before the display is opened so they work even if a
|
||||
connection to the display can't be opened.
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit e38962ed83081fe00b99c8b8c3d82ba053f88d94
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Thu Jul 28 17:30:21 2022 -0700
|
||||
|
||||
gitlab CI: stop requiring Signed-off-by in commits
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit c060e6d25349073b36c85f0d5f29ec197c80b6b9
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sat Apr 2 11:53:10 2022 -0700
|
||||
|
||||
man page: remove out-of-date reference to X(7)
|
||||
|
||||
The X(7) man page doesn't list any license information as this had claimed.
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit ebbd57a53d3b3f50276fe5a0c3fcb101b686af25
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sun Jan 9 13:17:22 2022 -0800
|
||||
|
||||
Fix spelling/wording issues
|
||||
|
||||
Found by using:
|
||||
codespell --builtin clear,rare,usage,informal,code,names
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit bdd57f33b50f8735da8ae5f7cf4ca28588eef0f4
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Mon Dec 6 11:51:36 2021 -0800
|
||||
|
||||
Build xz tarballs instead of bzip2
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit 700a55129d4d653a6ebc09cd3ff372d52912d137
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Mon Dec 6 11:51:33 2021 -0800
|
||||
|
||||
gitlab CI: add a basic build test
|
||||
|
||||
Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
|
||||
commit adde23dc8724dc6f793b0c68143dc34818f7f6f4
|
||||
Author: Alan Coopersmith <alan.coopersmith@oracle.com>
|
||||
Date: Sun Aug 1 16:41:00 2021 -0700
|
||||
|
||||
157
app/xeyes/Eyes.c
157
app/xeyes/Eyes.c
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
|
||||
Copyright (c) 1991 X Consortium
|
||||
Copyright (c) 2023 q3k
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
@@ -49,6 +50,7 @@ from the X Consortium.
|
||||
# include <X11/Xlibint.h>
|
||||
# include <stdlib.h>
|
||||
# include <X11/extensions/XInput2.h>
|
||||
# include <assert.h>
|
||||
|
||||
#define offset(field) XtOffsetOf(EyesRec, eyes.field)
|
||||
#define goffset(field) XtOffsetOf(WidgetRec, core.field)
|
||||
@@ -83,23 +85,19 @@ static XtResource resources[] = {
|
||||
#endif
|
||||
{(char *) XtNdistance, (char *) XtCBoolean, XtRBoolean, sizeof(Boolean),
|
||||
offset(distance), XtRImmediate, (XtPointer) FALSE },
|
||||
{(char *) XtNbiblicallyAccurate, (char *) XtCBoolean, XtRBoolean, sizeof(Boolean),
|
||||
offset(biblically_accurate), XtRImmediate, (XtPointer) FALSE },
|
||||
};
|
||||
|
||||
#undef offset
|
||||
#undef goffset
|
||||
|
||||
# define EYE_X(n) ((n) * 2.0)
|
||||
# define EYE_Y(n) (0.0)
|
||||
# define EYE_OFFSET (0.1) /* padding between eyes */
|
||||
# define EYE_THICK (0.175) /* thickness of eye rim */
|
||||
# define BALL_DIAM (0.3)
|
||||
# define BALL_PAD (0.175)
|
||||
# define EYE_DIAM (2.0 - (EYE_THICK + EYE_OFFSET) * 2)
|
||||
# define BALL_DIST ((EYE_DIAM - BALL_DIAM) / 2.0 - BALL_PAD)
|
||||
# define W_MIN_X (-1.0 + EYE_OFFSET)
|
||||
# define W_MAX_X (3.0 - EYE_OFFSET)
|
||||
# define W_MIN_Y (-1.0 + EYE_OFFSET)
|
||||
# define W_MAX_Y (1.0 - EYE_OFFSET)
|
||||
|
||||
# define TPOINT_NONE (-1000) /* special value meaning "not yet set" */
|
||||
# define TPointEqual(a, b) ((a).x == (b).x && (a).y == (b).y)
|
||||
@@ -109,6 +107,69 @@ static XtResource resources[] = {
|
||||
|
||||
static int delays[] = { 50, 100, 200, 400, 0 };
|
||||
|
||||
static EyeLayout layout_standard[] = {
|
||||
{ .x = 0.0, .y = 0.0, },
|
||||
{ .x = 2.0, .y = 0.0, },
|
||||
};
|
||||
|
||||
static EyeLayout layout_biblical[] = {
|
||||
{ .x = 0.0+0.75, .y = 0.0, },
|
||||
{ .x = 1.5+0.75, .y = 0.0, },
|
||||
{ .x = 3.0+0.75, .y = 0.0, },
|
||||
|
||||
{ .x = 0.0+0.00, .y = 1.4, },
|
||||
{ .x = 1.5+0.00, .y = 1.4, },
|
||||
{ .x = 3.0+0.00, .y = 1.4, },
|
||||
{ .x = 4.5+0.00, .y = 1.4, },
|
||||
|
||||
{ .x = 0.0+0.75, .y = 2.8, },
|
||||
{ .x = 1.5+0.75, .y = 2.8, },
|
||||
{ .x = 3.0+0.75, .y = 2.8, },
|
||||
};
|
||||
|
||||
static EyeConfiguration *EyesConfigure(Boolean biblically_accurate)
|
||||
{
|
||||
EyeConfiguration *c = calloc(sizeof(EyeConfiguration), 1);
|
||||
assert(c != NULL);
|
||||
|
||||
if (biblically_accurate) {
|
||||
c->eyes = layout_biblical;
|
||||
c->count = sizeof(layout_biblical) / sizeof(EyeLayout);
|
||||
} else {
|
||||
c->eyes = layout_standard;
|
||||
c->count = sizeof(layout_standard) / sizeof(EyeLayout);
|
||||
}
|
||||
|
||||
// Calculate the bounding box of the eyes.
|
||||
c->w_min_x = c->eyes[0].x;
|
||||
c->w_max_x = c->eyes[0].x;
|
||||
c->w_min_y = c->eyes[0].y;
|
||||
c->w_max_y = c->eyes[0].y;
|
||||
|
||||
for (int i = 0; i < c->count; i++) {
|
||||
EyeLayout *l = &c->eyes[i];
|
||||
if (l->x > c->w_max_x) {
|
||||
c->w_max_x = l->x;
|
||||
}
|
||||
if (l->x < c->w_min_x) {
|
||||
c->w_min_x = l->x;
|
||||
}
|
||||
if (l->y > c->w_max_y) {
|
||||
c->w_max_y = l->y;
|
||||
}
|
||||
if (l->y < c->w_min_y) {
|
||||
c->w_min_y = l->y;
|
||||
}
|
||||
}
|
||||
|
||||
// Add half size of eye (2.0) minus padding to each edge.
|
||||
c->w_min_x -= (1.0 - EYE_OFFSET);
|
||||
c->w_max_x += (1.0 - EYE_OFFSET);
|
||||
c->w_min_y -= (1.0 - EYE_OFFSET);
|
||||
c->w_max_y += (1.0 - EYE_OFFSET);
|
||||
return c;
|
||||
}
|
||||
|
||||
static void ClassInitialize(void)
|
||||
{
|
||||
XtAddConverter( XtRString, XtRBackingStore, XmuCvtStringToBackingStore,
|
||||
@@ -344,6 +405,17 @@ static void Initialize (
|
||||
enum EyesPart i;
|
||||
#endif
|
||||
|
||||
EyeConfiguration *config = EyesConfigure(w->eyes.biblically_accurate);
|
||||
TPoint *pupils = calloc(sizeof(TPoint), config->count);
|
||||
assert(pupils != NULL);
|
||||
for (int j = 0; j < config->count; j++) {
|
||||
pupils[j].x = TPOINT_NONE;
|
||||
pupils[j].y = TPOINT_NONE;
|
||||
}
|
||||
w->eyes.configuration = config;
|
||||
w->eyes.pupils = pupils;
|
||||
|
||||
|
||||
/*
|
||||
* set the colors if reverse video; these are the colors used:
|
||||
*
|
||||
@@ -386,9 +458,6 @@ static void Initialize (
|
||||
/* wait for Realize to add the timeout */
|
||||
w->eyes.interval_id = 0;
|
||||
|
||||
w->eyes.pupil[0].x = w->eyes.pupil[1].x = TPOINT_NONE;
|
||||
w->eyes.pupil[0].y = w->eyes.pupil[1].y = TPOINT_NONE;
|
||||
|
||||
w->eyes.mouse.x = w->eyes.mouse.y = TPOINT_NONE;
|
||||
|
||||
if (w->eyes.shape_window && !XShapeQueryExtension (XtDisplay (w),
|
||||
@@ -511,19 +580,20 @@ eyeLiner(EyesWidget w,
|
||||
Boolean draw,
|
||||
int num)
|
||||
{
|
||||
EyeLayout *l = &w->eyes.configuration->eyes[num];
|
||||
drawEllipse(w, draw ? PART_OUTLINE : PART_SHAPE,
|
||||
EYE_X(num), EYE_Y(num),
|
||||
l->x, l->y,
|
||||
TPOINT_NONE, TPOINT_NONE,
|
||||
EYE_DIAM + 2.0*EYE_THICK);
|
||||
if (draw) {
|
||||
drawEllipse(w, PART_CENTER, EYE_X(num), EYE_Y(num),
|
||||
drawEllipse(w, PART_CENTER, l->x, l->y,
|
||||
TPOINT_NONE, TPOINT_NONE,
|
||||
EYE_DIAM);
|
||||
}
|
||||
}
|
||||
|
||||
static TPoint computePupil (
|
||||
int num,
|
||||
EyeLayout *layout,
|
||||
TPoint mouse,
|
||||
const TRectangle *screen)
|
||||
{
|
||||
@@ -534,8 +604,8 @@ static TPoint computePupil (
|
||||
double cosa, sina;
|
||||
TPoint ret;
|
||||
|
||||
cx = EYE_X(num); dx = mouse.x - cx;
|
||||
cy = EYE_Y(num); dy = mouse.y - cy;
|
||||
cx = layout->x; dx = mouse.x - cx;
|
||||
cy = layout->y; dy = mouse.y - cy;
|
||||
if (dx == 0 && dy == 0);
|
||||
else {
|
||||
angle = atan2 ((double) dy, (double) dx);
|
||||
@@ -594,7 +664,7 @@ static TPoint computePupil (
|
||||
static void computePupils (
|
||||
EyesWidget w,
|
||||
TPoint mouse,
|
||||
TPoint pupils[2])
|
||||
TPoint *pupils)
|
||||
{
|
||||
TRectangle screen, *sp = NULL;
|
||||
if (w->eyes.distance) {
|
||||
@@ -610,8 +680,9 @@ static void computePupils (
|
||||
&w->eyes.t);
|
||||
sp = &screen;
|
||||
}
|
||||
pupils[0] = computePupil (0, mouse, sp);
|
||||
pupils[1] = computePupil (1, mouse, sp);
|
||||
for (int i = 0; i < w->eyes.configuration->count; i++) {
|
||||
pupils[i] = computePupil(&w->eyes.configuration->eyes[i], mouse, sp);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -620,8 +691,9 @@ eyeBall(EyesWidget w,
|
||||
TPoint *old,
|
||||
int num)
|
||||
{
|
||||
//printf("eyeBall(_, %d, %p, %d)\n", draw, old, num);
|
||||
drawEllipse(w, draw ? PART_PUPIL : PART_CLEAR,
|
||||
w->eyes.pupil[num].x, w->eyes.pupil[num].y,
|
||||
w->eyes.pupils[num].x, w->eyes.pupils[num].y,
|
||||
old ? old->x : TPOINT_NONE, old ? old->y : TPOINT_NONE,
|
||||
BALL_DIAM);
|
||||
}
|
||||
@@ -632,11 +704,13 @@ static void repaint_window (EyesWidget w)
|
||||
#ifdef PRESENT
|
||||
MakePresentData(w);
|
||||
#endif
|
||||
eyeLiner (w, TRUE, 0);
|
||||
eyeLiner (w, TRUE, 1);
|
||||
computePupils (w, w->eyes.mouse, w->eyes.pupil);
|
||||
eyeBall (w, TRUE, NULL, 0);
|
||||
eyeBall (w, TRUE, NULL, 1);
|
||||
for (int i = 0; i < w->eyes.configuration->count; i++) {
|
||||
eyeLiner (w, TRUE, i);
|
||||
}
|
||||
computePupils (w, w->eyes.mouse, w->eyes.pupils);
|
||||
for (int i = 0; i < w->eyes.configuration->count; i++) {
|
||||
eyeBall (w, TRUE, NULL, i);
|
||||
}
|
||||
#ifdef PRESENT
|
||||
UpdatePresent(w);
|
||||
#endif
|
||||
@@ -648,17 +722,17 @@ drawEye(EyesWidget w, TPoint newpupil, int num)
|
||||
{
|
||||
XPoint xnewpupil, xpupil;
|
||||
|
||||
xpupil.x = Xx(w->eyes.pupil[num].x, w->eyes.pupil[num].y, &w->eyes.t);
|
||||
xpupil.y = Xy(w->eyes.pupil[num].x, w->eyes.pupil[num].y, &w->eyes.t);
|
||||
xpupil.x = Xx(w->eyes.pupils[num].x, w->eyes.pupils[num].y, &w->eyes.t);
|
||||
xpupil.y = Xy(w->eyes.pupils[num].x, w->eyes.pupils[num].y, &w->eyes.t);
|
||||
xnewpupil.x = Xx(newpupil.x, newpupil.y, &w->eyes.t);
|
||||
xnewpupil.y = Xy(newpupil.x, newpupil.y, &w->eyes.t);
|
||||
if (
|
||||
#ifdef XRENDER
|
||||
w->eyes.picture ? !TPointEqual(w->eyes.pupil[num], newpupil) :
|
||||
w->eyes.picture ? !TPointEqual(w->eyes.pupils[num], newpupil) :
|
||||
#endif
|
||||
!XPointEqual(xpupil, xnewpupil)) {
|
||||
TPoint oldpupil = w->eyes.pupil[num];
|
||||
w->eyes.pupil[num] = newpupil;
|
||||
TPoint oldpupil = w->eyes.pupils[num];
|
||||
w->eyes.pupils[num] = newpupil;
|
||||
eyeBall (w, TRUE, &oldpupil, num);
|
||||
}
|
||||
}
|
||||
@@ -666,8 +740,8 @@ drawEye(EyesWidget w, TPoint newpupil, int num)
|
||||
static void
|
||||
drawEyes(EyesWidget w, TPoint mouse)
|
||||
{
|
||||
TPoint newpupil[2];
|
||||
int num;
|
||||
TPoint newpupils[w->eyes.configuration->count];
|
||||
|
||||
#ifdef PRESENT
|
||||
MakePresentData(w);
|
||||
@@ -677,9 +751,9 @@ drawEyes(EyesWidget w, TPoint mouse)
|
||||
++w->eyes.update;
|
||||
return;
|
||||
}
|
||||
computePupils (w, mouse, newpupil);
|
||||
for (num = 0; num < 2; num ++) {
|
||||
drawEye(w, newpupil[num], num);
|
||||
computePupils (w, mouse, newpupils);
|
||||
for (num = 0; num < w->eyes.configuration->count; num++) {
|
||||
drawEye(w, newpupils[num], num);
|
||||
}
|
||||
|
||||
w->eyes.mouse = mouse;
|
||||
@@ -737,8 +811,10 @@ static void Resize (Widget gw)
|
||||
SetTransform (&w->eyes.t,
|
||||
0, w->core.width,
|
||||
w->core.height, 0,
|
||||
W_MIN_X, W_MAX_X,
|
||||
W_MIN_Y, W_MAX_Y);
|
||||
w->eyes.configuration->w_min_x,
|
||||
w->eyes.configuration->w_max_x,
|
||||
w->eyes.configuration->w_min_y,
|
||||
w->eyes.configuration->w_max_y);
|
||||
#ifdef PRESENT
|
||||
if (w->eyes.back_buffer) {
|
||||
xcb_free_pixmap(xt_xcb(w),
|
||||
@@ -769,8 +845,9 @@ static void Resize (Widget gw)
|
||||
XFillRectangle (dpy, w->eyes.shape_mask, w->eyes.gc[PART_SHAPE],
|
||||
0, 0, w->core.width, w->core.height);
|
||||
XSetForeground (dpy, w->eyes.gc[PART_SHAPE], 1);
|
||||
eyeLiner (w, FALSE, 0);
|
||||
eyeLiner (w, FALSE, 1);
|
||||
for (int i = 0; i < w->eyes.configuration->count; i++) {
|
||||
eyeLiner (w, FALSE, i);
|
||||
}
|
||||
x = y = 0;
|
||||
for (parent = (Widget) w; XtParent (parent); parent = XtParent (parent)) {
|
||||
x += parent->core.x + parent->core.border_width;
|
||||
@@ -842,10 +919,10 @@ static void Redisplay(
|
||||
EyesWidget w;
|
||||
|
||||
w = (EyesWidget) gw;
|
||||
w->eyes.pupil[0].x = TPOINT_NONE;
|
||||
w->eyes.pupil[0].y = TPOINT_NONE;
|
||||
w->eyes.pupil[1].x = TPOINT_NONE;
|
||||
w->eyes.pupil[1].y = TPOINT_NONE;
|
||||
for (int i = 0; i < w->eyes.configuration->count; i++) {
|
||||
w->eyes.pupils[i].x = TPOINT_NONE;
|
||||
w->eyes.pupils[i].y = TPOINT_NONE;
|
||||
}
|
||||
(void) repaint_window ((EyesWidget)gw);
|
||||
}
|
||||
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
|
||||
#define XtNrender "render"
|
||||
#define XtNdistance "distance"
|
||||
#define XtNbiblicallyAccurate "biblicallyAccurate"
|
||||
|
||||
#define XtNpresent "present"
|
||||
|
||||
|
||||
@@ -18,6 +18,23 @@
|
||||
|
||||
#define SEG_BUFF_SIZE 128
|
||||
|
||||
typedef struct {
|
||||
// X offset
|
||||
double x;
|
||||
// Y offset
|
||||
double y;
|
||||
} EyeLayout;
|
||||
|
||||
typedef struct {
|
||||
EyeLayout *eyes;
|
||||
int count;
|
||||
|
||||
double w_min_x;
|
||||
double w_max_x;
|
||||
double w_min_y;
|
||||
double w_max_y;
|
||||
} EyeConfiguration;
|
||||
|
||||
/* New fields for the eyes widget instance record */
|
||||
typedef struct {
|
||||
Pixel pixel[PART_SHAPE];
|
||||
@@ -28,7 +45,9 @@ typedef struct {
|
||||
Boolean shape_window; /* use SetWindowShapeMask */
|
||||
int update; /* current timeout index */
|
||||
TPoint mouse; /* old mouse position */
|
||||
TPoint pupil[2]; /* pupil position */
|
||||
Boolean biblically_accurate;
|
||||
EyeConfiguration *configuration;
|
||||
TPoint *pupils;
|
||||
Transform t;
|
||||
Transform maskt;
|
||||
XtIntervalId interval_id;
|
||||
|
||||
@@ -181,9 +181,9 @@ am__relativize = \
|
||||
dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \
|
||||
done; \
|
||||
reldir="$$dir2"
|
||||
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
|
||||
DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.xz
|
||||
GZIP_ENV = --best
|
||||
DIST_TARGETS = dist-bzip2 dist-gzip
|
||||
DIST_TARGETS = dist-xz dist-gzip
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \
|
||||
| sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$'
|
||||
@@ -204,7 +204,6 @@ CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CHANGELOG_CMD = @CHANGELOG_CMD@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CWARNFLAGS = @CWARNFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
@@ -215,11 +214,9 @@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FILE_MAN_DIR = @FILE_MAN_DIR@
|
||||
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_CMD = @INSTALL_CMD@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
@@ -655,6 +652,7 @@ distdir: $(DISTFILES)
|
||||
dist-gzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-bzip2: distdir
|
||||
tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2
|
||||
$(am__post_remove_distdir)
|
||||
@@ -662,7 +660,6 @@ dist-bzip2: distdir
|
||||
dist-lzip: distdir
|
||||
tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
dist-xz: distdir
|
||||
tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz
|
||||
$(am__post_remove_distdir)
|
||||
|
||||
@@ -6,7 +6,7 @@ Xorg mailing list:
|
||||
|
||||
https://lists.x.org/mailman/listinfo/xorg
|
||||
|
||||
The master development code repository can be found at:
|
||||
The primary development code repository can be found at:
|
||||
|
||||
https://gitlab.freedesktop.org/xorg/app/xeyes
|
||||
|
||||
|
||||
72
app/xeyes/aclocal.m4
vendored
72
app/xeyes/aclocal.m4
vendored
@@ -13,8 +13,8 @@
|
||||
|
||||
m4_ifndef([AC_AUTOCONF_VERSION],
|
||||
[m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
|
||||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
|
||||
[m4_warning([this file was generated for autoconf 2.69.
|
||||
m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.71],,
|
||||
[m4_warning([this file was generated for autoconf 2.71.
|
||||
You have another version of autoconf. It may work, but is not guaranteed to.
|
||||
If you have problems, you may need to regenerate the build system entirely.
|
||||
To do so, use the procedure documented by the package, typically 'autoreconf'.])])
|
||||
@@ -1318,7 +1318,7 @@ AC_SUBST([am__untar])
|
||||
|
||||
dnl xorg-macros.m4. Generated from xorg-macros.m4.in xorgversion.m4 by configure.
|
||||
dnl
|
||||
dnl Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
dnl Copyright (c) 2005, 2023, Oracle and/or its affiliates.
|
||||
dnl
|
||||
dnl Permission is hereby granted, free of charge, to any person obtaining a
|
||||
dnl copy of this software and associated documentation files (the "Software"),
|
||||
@@ -1355,7 +1355,7 @@ dnl DEALINGS IN THE SOFTWARE.
|
||||
# See the "minimum version" comment for each macro you use to see what
|
||||
# version you require.
|
||||
m4_defun([XORG_MACROS_VERSION],[
|
||||
m4_define([vers_have], [1.19.2])
|
||||
m4_define([vers_have], [1.20.0])
|
||||
m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
|
||||
m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
|
||||
m4_if(m4_cmp(maj_have, maj_needed), 0,,
|
||||
@@ -1376,7 +1376,7 @@ AM_MAINTAINER_MODE
|
||||
# such as man pages and config files
|
||||
AC_DEFUN([XORG_PROG_RAWCPP],[
|
||||
AC_REQUIRE([AC_PROG_CPP])
|
||||
AC_PATH_PROGS(RAWCPP, [cpp], [${CPP}],
|
||||
AC_PATH_TOOL(RAWCPP, [cpp], [${CPP}],
|
||||
[$PATH:/bin:/usr/bin:/usr/lib:/usr/libexec:/usr/ccs/lib:/usr/ccs/lbin:/lib])
|
||||
|
||||
# Check for flag to avoid builtin definitions - assumes unix is predefined,
|
||||
@@ -1686,7 +1686,7 @@ AC_SUBST(MAKE_HTML)
|
||||
# Documentation tools are not always available on all platforms and sometimes
|
||||
# not at the appropriate level. This macro enables a module to test for the
|
||||
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||
# the --with-xmlto option, it allows maximum flexibilty in making decisions
|
||||
# the --with-xmlto option, it allows maximum flexibility in making decisions
|
||||
# as whether or not to use the xmlto package. When DEFAULT is not specified,
|
||||
# --with-xmlto assumes 'auto'.
|
||||
#
|
||||
@@ -1900,7 +1900,7 @@ AM_CONDITIONAL([HAVE_PERL], [test "$have_perl" = yes])
|
||||
# Documentation tools are not always available on all platforms and sometimes
|
||||
# not at the appropriate level. This macro enables a module to test for the
|
||||
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||
# the --with-asciidoc option, it allows maximum flexibilty in making decisions
|
||||
# the --with-asciidoc option, it allows maximum flexibility in making decisions
|
||||
# as whether or not to use the asciidoc package. When DEFAULT is not specified,
|
||||
# --with-asciidoc assumes 'auto'.
|
||||
#
|
||||
@@ -1970,7 +1970,7 @@ AM_CONDITIONAL([HAVE_ASCIIDOC], [test "$have_asciidoc" = yes])
|
||||
# Documentation tools are not always available on all platforms and sometimes
|
||||
# not at the appropriate level. This macro enables a module to test for the
|
||||
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||
# the --with-doxygen option, it allows maximum flexibilty in making decisions
|
||||
# the --with-doxygen option, it allows maximum flexibility in making decisions
|
||||
# as whether or not to use the doxygen package. When DEFAULT is not specified,
|
||||
# --with-doxygen assumes 'auto'.
|
||||
#
|
||||
@@ -2054,7 +2054,7 @@ AM_CONDITIONAL([HAVE_DOXYGEN], [test "$have_doxygen" = yes])
|
||||
# Documentation tools are not always available on all platforms and sometimes
|
||||
# not at the appropriate level. This macro enables a module to test for the
|
||||
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||
# the --with-groff option, it allows maximum flexibilty in making decisions
|
||||
# the --with-groff option, it allows maximum flexibility in making decisions
|
||||
# as whether or not to use the groff package. When DEFAULT is not specified,
|
||||
# --with-groff assumes 'auto'.
|
||||
#
|
||||
@@ -2162,7 +2162,7 @@ AM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes])
|
||||
# Documentation tools are not always available on all platforms and sometimes
|
||||
# not at the appropriate level. This macro enables a module to test for the
|
||||
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||
# the --with-fop option, it allows maximum flexibilty in making decisions
|
||||
# the --with-fop option, it allows maximum flexibility in making decisions
|
||||
# as whether or not to use the fop package. When DEFAULT is not specified,
|
||||
# --with-fop assumes 'auto'.
|
||||
#
|
||||
@@ -2256,7 +2256,7 @@ AC_SUBST([M4], [$ac_cv_path_M4])
|
||||
# Documentation tools are not always available on all platforms and sometimes
|
||||
# not at the appropriate level. This macro enables a module to test for the
|
||||
# presence of the tool and obtain it's path in separate variables. Coupled with
|
||||
# the --with-ps2pdf option, it allows maximum flexibilty in making decisions
|
||||
# the --with-ps2pdf option, it allows maximum flexibility in making decisions
|
||||
# as whether or not to use the ps2pdf package. When DEFAULT is not specified,
|
||||
# --with-ps2pdf assumes 'auto'.
|
||||
#
|
||||
@@ -2311,7 +2311,7 @@ AM_CONDITIONAL([HAVE_PS2PDF], [test "$have_ps2pdf" = yes])
|
||||
# not at the appropriate level. This macro enables a builder to skip all
|
||||
# documentation targets except traditional man pages.
|
||||
# Combined with the specific tool checking macros XORG_WITH_*, it provides
|
||||
# maximum flexibilty in controlling documentation building.
|
||||
# maximum flexibility in controlling documentation building.
|
||||
# Refer to:
|
||||
# XORG_WITH_XMLTO --with-xmlto
|
||||
# XORG_WITH_ASCIIDOC --with-asciidoc
|
||||
@@ -2344,7 +2344,7 @@ AC_MSG_RESULT([$build_docs])
|
||||
#
|
||||
# This macro enables a builder to skip all developer documentation.
|
||||
# Combined with the specific tool checking macros XORG_WITH_*, it provides
|
||||
# maximum flexibilty in controlling documentation building.
|
||||
# maximum flexibility in controlling documentation building.
|
||||
# Refer to:
|
||||
# XORG_WITH_XMLTO --with-xmlto
|
||||
# XORG_WITH_ASCIIDOC --with-asciidoc
|
||||
@@ -2377,7 +2377,7 @@ AC_MSG_RESULT([$build_devel_docs])
|
||||
#
|
||||
# This macro enables a builder to skip all functional specification targets.
|
||||
# Combined with the specific tool checking macros XORG_WITH_*, it provides
|
||||
# maximum flexibilty in controlling documentation building.
|
||||
# maximum flexibility in controlling documentation building.
|
||||
# Refer to:
|
||||
# XORG_WITH_XMLTO --with-xmlto
|
||||
# XORG_WITH_ASCIIDOC --with-asciidoc
|
||||
@@ -2852,7 +2852,11 @@ AM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno])
|
||||
AC_DEFUN([XORG_COMPILER_BRAND], [
|
||||
AC_LANG_CASE(
|
||||
[C], [
|
||||
AC_REQUIRE([AC_PROG_CC_C99])
|
||||
dnl autoconf-2.70 folded AC_PROG_CC_C99 into AC_PROG_CC
|
||||
dnl and complains that AC_PROG_CC_C99 is obsolete
|
||||
m4_version_prereq([2.70],
|
||||
[AC_REQUIRE([AC_PROG_CC])],
|
||||
[AC_REQUIRE([AC_PROG_CC_C99])])
|
||||
],
|
||||
[C++], [
|
||||
AC_REQUIRE([AC_PROG_CXX])
|
||||
@@ -2868,7 +2872,7 @@ AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
|
||||
# Minimum version: 1.16.0
|
||||
#
|
||||
# Test if the compiler works when passed the given flag as a command line argument.
|
||||
# If it succeeds, the flag is appeneded to the given variable. If not, it tries the
|
||||
# If it succeeds, the flag is appended to the given variable. If not, it tries the
|
||||
# next flag in the list until there are no more options.
|
||||
#
|
||||
# Note that this does not guarantee that the compiler supports the flag as some
|
||||
@@ -2884,7 +2888,11 @@ AC_LANG_COMPILER_REQUIRE
|
||||
|
||||
AC_LANG_CASE(
|
||||
[C], [
|
||||
AC_REQUIRE([AC_PROG_CC_C99])
|
||||
dnl autoconf-2.70 folded AC_PROG_CC_C99 into AC_PROG_CC
|
||||
dnl and complains that AC_PROG_CC_C99 is obsolete
|
||||
m4_version_prereq([2.70],
|
||||
[AC_REQUIRE([AC_PROG_CC])],
|
||||
[AC_REQUIRE([AC_PROG_CC_C99])])
|
||||
define([PREFIX], [C])
|
||||
define([CACHE_PREFIX], [cc])
|
||||
define([COMPILER], [$CC])
|
||||
@@ -3025,7 +3033,7 @@ XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wlogical-op])
|
||||
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-align])
|
||||
# XORG_TESTSET_CFLAG([[BASE_]PREFIX[FLAGS]], [-Wcast-qual])
|
||||
|
||||
# Turn some warnings into errors, so we don't accidently get successful builds
|
||||
# Turn some warnings into errors, so we don't accidentally get successful builds
|
||||
# when there are problems that should be fixed.
|
||||
|
||||
if test "x$SELECTIVE_WERROR" = "xyes" ; then
|
||||
@@ -3134,23 +3142,35 @@ AC_SUBST([BASE_]PREFIX[FLAGS])
|
||||
AC_LANG_CASE([C], AC_SUBST([CWARNFLAGS]))
|
||||
]) # XORG_STRICT_OPTION
|
||||
|
||||
# XORG_DEFAULT_OPTIONS
|
||||
# --------------------
|
||||
# Minimum version: 1.3.0
|
||||
# XORG_DEFAULT_NOCODE_OPTIONS
|
||||
# ---------------------------
|
||||
# Minimum version: 1.20.0
|
||||
#
|
||||
# Defines default options for X.Org modules.
|
||||
# Defines default options for X.Org modules which don't compile code,
|
||||
# such as fonts, bitmaps, cursors, and docs.
|
||||
#
|
||||
AC_DEFUN([XORG_DEFAULT_OPTIONS], [
|
||||
AC_DEFUN([XORG_DEFAULT_NOCODE_OPTIONS], [
|
||||
AC_REQUIRE([AC_PROG_INSTALL])
|
||||
XORG_COMPILER_FLAGS
|
||||
XORG_CWARNFLAGS
|
||||
XORG_STRICT_OPTION
|
||||
XORG_RELEASE_VERSION
|
||||
XORG_CHANGELOG
|
||||
XORG_INSTALL
|
||||
XORG_MANPAGE_SECTIONS
|
||||
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])],
|
||||
[AC_SUBST([AM_DEFAULT_VERBOSITY], [1])])
|
||||
]) # XORG_DEFAULT_NOCODE_OPTIONS
|
||||
|
||||
# XORG_DEFAULT_OPTIONS
|
||||
# --------------------
|
||||
# Minimum version: 1.3.0
|
||||
#
|
||||
# Defines default options for X.Org modules which compile code.
|
||||
#
|
||||
AC_DEFUN([XORG_DEFAULT_OPTIONS], [
|
||||
AC_REQUIRE([AC_PROG_INSTALL])
|
||||
XORG_COMPILER_FLAGS
|
||||
XORG_CWARNFLAGS
|
||||
XORG_STRICT_OPTION
|
||||
XORG_DEFAULT_NOCODE_OPTIONS
|
||||
]) # XORG_DEFAULT_OPTIONS
|
||||
|
||||
# XORG_INSTALL()
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#undef HAVE_INTTYPES_H
|
||||
|
||||
/* Define to 1 if you have the <memory.h> header file. */
|
||||
#undef HAVE_MEMORY_H
|
||||
|
||||
/* Define to 1 if you have the <stdint.h> header file. */
|
||||
#undef HAVE_STDINT_H
|
||||
|
||||
/* Define to 1 if you have the <stdio.h> header file. */
|
||||
#undef HAVE_STDIO_H
|
||||
|
||||
/* Define to 1 if you have the <stdlib.h> header file. */
|
||||
#undef HAVE_STDLIB_H
|
||||
|
||||
@@ -60,7 +60,9 @@
|
||||
/* Define to use X Present Extension */
|
||||
#undef PRESENT
|
||||
|
||||
/* Define to 1 if you have the ANSI C header files. */
|
||||
/* Define to 1 if all of the C90 standard headers exist (not just the ones
|
||||
required in a freestanding environment). This macro is provided for
|
||||
backward compatibility; new code need not use it. */
|
||||
#undef STDC_HEADERS
|
||||
|
||||
/* Version number of package */
|
||||
|
||||
6527
app/xeyes/configure
vendored
6527
app/xeyes/configure
vendored
File diff suppressed because it is too large
Load Diff
@@ -23,14 +23,13 @@ dnl Process this file with autoconf to create configure.
|
||||
|
||||
# Initialize Autoconf
|
||||
AC_PREREQ([2.60])
|
||||
AC_INIT([xeyes], [1.2.0],
|
||||
[https://gitlab.freedesktop.org/xorg/app/xeyes/issues], [xeyes])
|
||||
AC_INIT([xeyes], [1.3.0],
|
||||
[https://gitlab.freedesktop.org/xorg/app/xeyes/-/issues], [xeyes])
|
||||
AC_CONFIG_SRCDIR([Makefile.am])
|
||||
AC_CONFIG_HEADERS([config.h])
|
||||
|
||||
# Initialize Automake
|
||||
AM_INIT_AUTOMAKE([foreign dist-bzip2])
|
||||
AM_MAINTAINER_MODE
|
||||
AM_INIT_AUTOMAKE([foreign dist-xz])
|
||||
|
||||
# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
|
||||
m4_ifndef([XORG_MACROS_VERSION],
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
# install - install a program, script, or datafile
|
||||
|
||||
scriptversion=2011-11-20.07; # UTC
|
||||
scriptversion=2020-11-14.01; # UTC
|
||||
|
||||
# This originates from X11R5 (mit/util/scripts/install.sh), which was
|
||||
# later released in X11R6 (xc/config/util/install.sh) with the
|
||||
@@ -41,19 +41,15 @@ scriptversion=2011-11-20.07; # UTC
|
||||
# This script is compatible with the BSD install script, but was written
|
||||
# from scratch.
|
||||
|
||||
tab=' '
|
||||
nl='
|
||||
'
|
||||
IFS=" "" $nl"
|
||||
IFS=" $tab$nl"
|
||||
|
||||
# set DOITPROG to echo to test this script
|
||||
# Set DOITPROG to "echo" to test this script.
|
||||
|
||||
# Don't use :- since 4.3BSD and earlier shells don't like it.
|
||||
doit=${DOITPROG-}
|
||||
if test -z "$doit"; then
|
||||
doit_exec=exec
|
||||
else
|
||||
doit_exec=$doit
|
||||
fi
|
||||
doit_exec=${doit:-exec}
|
||||
|
||||
# Put in absolute file names if you don't have them in your path;
|
||||
# or use environment vars.
|
||||
@@ -68,22 +64,16 @@ mvprog=${MVPROG-mv}
|
||||
rmprog=${RMPROG-rm}
|
||||
stripprog=${STRIPPROG-strip}
|
||||
|
||||
posix_glob='?'
|
||||
initialize_posix_glob='
|
||||
test "$posix_glob" != "?" || {
|
||||
if (set -f) 2>/dev/null; then
|
||||
posix_glob=
|
||||
else
|
||||
posix_glob=:
|
||||
fi
|
||||
}
|
||||
'
|
||||
|
||||
posix_mkdir=
|
||||
|
||||
# Desired mode of installed file.
|
||||
mode=0755
|
||||
|
||||
# Create dirs (including intermediate dirs) using mode 755.
|
||||
# This is like GNU 'install' as of coreutils 8.32 (2020).
|
||||
mkdir_umask=22
|
||||
|
||||
backupsuffix=
|
||||
chgrpcmd=
|
||||
chmodcmd=$chmodprog
|
||||
chowncmd=
|
||||
@@ -97,7 +87,7 @@ dir_arg=
|
||||
dst_arg=
|
||||
|
||||
copy_on_change=false
|
||||
no_target_directory=
|
||||
is_target_a_directory=possibly
|
||||
|
||||
usage="\
|
||||
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
|
||||
@@ -114,18 +104,28 @@ Options:
|
||||
--version display version info and exit.
|
||||
|
||||
-c (ignored)
|
||||
-C install only if different (preserve the last data modification time)
|
||||
-C install only if different (preserve data modification time)
|
||||
-d create directories instead of installing files.
|
||||
-g GROUP $chgrpprog installed files to GROUP.
|
||||
-m MODE $chmodprog installed files to MODE.
|
||||
-o USER $chownprog installed files to USER.
|
||||
-p pass -p to $cpprog.
|
||||
-s $stripprog installed files.
|
||||
-S SUFFIX attempt to back up existing files, with suffix SUFFIX.
|
||||
-t DIRECTORY install into DIRECTORY.
|
||||
-T report an error if DSTFILE is a directory.
|
||||
|
||||
Environment variables override the default commands:
|
||||
CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
|
||||
RMPROG STRIPPROG
|
||||
|
||||
By default, rm is invoked with -f; when overridden with RMPROG,
|
||||
it's up to you to specify -f if you want it.
|
||||
|
||||
If -S is not specified, no backups are attempted.
|
||||
|
||||
Email bug reports to bug-automake@gnu.org.
|
||||
Automake home page: https://www.gnu.org/software/automake/
|
||||
"
|
||||
|
||||
while test $# -ne 0; do
|
||||
@@ -137,46 +137,62 @@ while test $# -ne 0; do
|
||||
-d) dir_arg=true;;
|
||||
|
||||
-g) chgrpcmd="$chgrpprog $2"
|
||||
shift;;
|
||||
shift;;
|
||||
|
||||
--help) echo "$usage"; exit $?;;
|
||||
|
||||
-m) mode=$2
|
||||
case $mode in
|
||||
*' '* | *' '* | *'
|
||||
'* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
shift;;
|
||||
case $mode in
|
||||
*' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*)
|
||||
echo "$0: invalid mode: $mode" >&2
|
||||
exit 1;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-o) chowncmd="$chownprog $2"
|
||||
shift;;
|
||||
shift;;
|
||||
|
||||
-p) cpprog="$cpprog -p";;
|
||||
|
||||
-s) stripcmd=$stripprog;;
|
||||
|
||||
-t) dst_arg=$2
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
shift;;
|
||||
-S) backupsuffix="$2"
|
||||
shift;;
|
||||
|
||||
-T) no_target_directory=true;;
|
||||
-t)
|
||||
is_target_a_directory=always
|
||||
dst_arg=$2
|
||||
# Protect names problematic for 'test' and other utilities.
|
||||
case $dst_arg in
|
||||
-* | [=\(\)!]) dst_arg=./$dst_arg;;
|
||||
esac
|
||||
shift;;
|
||||
|
||||
-T) is_target_a_directory=never;;
|
||||
|
||||
--version) echo "$0 $scriptversion"; exit $?;;
|
||||
|
||||
--) shift
|
||||
break;;
|
||||
--) shift
|
||||
break;;
|
||||
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
-*) echo "$0: invalid option: $1" >&2
|
||||
exit 1;;
|
||||
|
||||
*) break;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
# We allow the use of options -d and -T together, by making -d
|
||||
# take the precedence; this is for compatibility with GNU install.
|
||||
|
||||
if test -n "$dir_arg"; then
|
||||
if test -n "$dst_arg"; then
|
||||
echo "$0: target directory not allowed when installing a directory." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
|
||||
# When -d is used, all remaining arguments are directories to create.
|
||||
# When -t is used, the destination is already specified.
|
||||
@@ -207,6 +223,15 @@ if test $# -eq 0; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
if test $# -gt 1 || test "$is_target_a_directory" = always; then
|
||||
if test ! -d "$dst_arg"; then
|
||||
echo "$0: $dst_arg: Is not a directory." >&2
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test -z "$dir_arg"; then
|
||||
do_exit='(exit $ret); exit $ret'
|
||||
trap "ret=129; $do_exit" 1
|
||||
@@ -223,16 +248,16 @@ if test -z "$dir_arg"; then
|
||||
|
||||
*[0-7])
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw='% 200'
|
||||
u_plus_rw='% 200'
|
||||
fi
|
||||
cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
|
||||
*)
|
||||
if test -z "$stripcmd"; then
|
||||
u_plus_rw=
|
||||
u_plus_rw=
|
||||
else
|
||||
u_plus_rw=,u+rw
|
||||
u_plus_rw=,u+rw
|
||||
fi
|
||||
cp_umask=$mode$u_plus_rw;;
|
||||
esac
|
||||
@@ -250,6 +275,10 @@ do
|
||||
dstdir=$dst
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
# Don't chown directories that already exist.
|
||||
if test $dstdir_status = 0; then
|
||||
chowncmd=""
|
||||
fi
|
||||
else
|
||||
|
||||
# Waiting for this to be detected by the "$cpprog $src $dsttmp" command
|
||||
@@ -266,178 +295,148 @@ do
|
||||
fi
|
||||
dst=$dst_arg
|
||||
|
||||
# If destination is a directory, append the input filename; won't work
|
||||
# if double slashes aren't ignored.
|
||||
# If destination is a directory, append the input filename.
|
||||
if test -d "$dst"; then
|
||||
if test -n "$no_target_directory"; then
|
||||
echo "$0: $dst_arg: Is a directory" >&2
|
||||
exit 1
|
||||
if test "$is_target_a_directory" = never; then
|
||||
echo "$0: $dst_arg: Is a directory" >&2
|
||||
exit 1
|
||||
fi
|
||||
dstdir=$dst
|
||||
dst=$dstdir/`basename "$src"`
|
||||
dstbase=`basename "$src"`
|
||||
case $dst in
|
||||
*/) dst=$dst$dstbase;;
|
||||
*) dst=$dst/$dstbase;;
|
||||
esac
|
||||
dstdir_status=0
|
||||
else
|
||||
# Prefer dirname, but fall back on a substitute if dirname fails.
|
||||
dstdir=`
|
||||
(dirname "$dst") 2>/dev/null ||
|
||||
expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
|
||||
X"$dst" : 'X\(//\)[^/]' \| \
|
||||
X"$dst" : 'X\(//\)$' \| \
|
||||
X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
|
||||
echo X"$dst" |
|
||||
sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)[^/].*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\/\)$/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
/^X\(\/\).*/{
|
||||
s//\1/
|
||||
q
|
||||
}
|
||||
s/.*/./; q'
|
||||
`
|
||||
|
||||
dstdir=`dirname "$dst"`
|
||||
test -d "$dstdir"
|
||||
dstdir_status=$?
|
||||
fi
|
||||
fi
|
||||
|
||||
case $dstdir in
|
||||
*/) dstdirslash=$dstdir;;
|
||||
*) dstdirslash=$dstdir/;;
|
||||
esac
|
||||
|
||||
obsolete_mkdir_used=false
|
||||
|
||||
if test $dstdir_status != 0; then
|
||||
case $posix_mkdir in
|
||||
'')
|
||||
# Create intermediate dirs using mode 755 as modified by the umask.
|
||||
# This is like FreeBSD 'install' as of 1997-10-28.
|
||||
umask=`umask`
|
||||
case $stripcmd.$umask in
|
||||
# Optimize common cases.
|
||||
*[2367][2367]) mkdir_umask=$umask;;
|
||||
.*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
else
|
||||
mkdir_mode=
|
||||
fi
|
||||
|
||||
*[0-7])
|
||||
mkdir_umask=`expr $umask + 22 \
|
||||
- $umask % 100 % 40 + $umask % 20 \
|
||||
- $umask % 10 % 4 + $umask % 2
|
||||
`;;
|
||||
*) mkdir_umask=$umask,go-w;;
|
||||
esac
|
||||
posix_mkdir=false
|
||||
# The $RANDOM variable is not portable (e.g., dash). Use it
|
||||
# here however when possible just to lower collision chance.
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
|
||||
# With -d, create the new directory with the user-specified mode.
|
||||
# Otherwise, rely on $mkdir_umask.
|
||||
if test -n "$dir_arg"; then
|
||||
mkdir_mode=-m$mode
|
||||
trap '
|
||||
ret=$?
|
||||
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null
|
||||
exit $ret
|
||||
' 0
|
||||
|
||||
# Because "mkdir -p" follows existing symlinks and we likely work
|
||||
# directly in world-writeable /tmp, make sure that the '$tmpdir'
|
||||
# directory is successfully created first before we actually test
|
||||
# 'mkdir -p'.
|
||||
if (umask $mkdir_umask &&
|
||||
$mkdirprog $mkdir_mode "$tmpdir" &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
test_tmpdir="$tmpdir/a"
|
||||
ls_ld_tmpdir=`ls -ld "$test_tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$test_tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir"
|
||||
else
|
||||
mkdir_mode=
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null
|
||||
fi
|
||||
|
||||
posix_mkdir=false
|
||||
case $umask in
|
||||
*[123567][0-7][0-7])
|
||||
# POSIX mkdir -p sets u+wx bits regardless of umask, which
|
||||
# is incompatible with FreeBSD 'install' when (umask & 300) != 0.
|
||||
;;
|
||||
*)
|
||||
tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
|
||||
trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
|
||||
|
||||
if (umask $mkdir_umask &&
|
||||
exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
|
||||
then
|
||||
if test -z "$dir_arg" || {
|
||||
# Check for POSIX incompatibilities with -m.
|
||||
# HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
|
||||
# other-writable bit of parent directory when it shouldn't.
|
||||
# FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
|
||||
ls_ld_tmpdir=`ls -ld "$tmpdir"`
|
||||
case $ls_ld_tmpdir in
|
||||
d????-?r-*) different_mode=700;;
|
||||
d????-?--*) different_mode=755;;
|
||||
*) false;;
|
||||
esac &&
|
||||
$mkdirprog -m$different_mode -p -- "$tmpdir" && {
|
||||
ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
|
||||
test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
|
||||
}
|
||||
}
|
||||
then posix_mkdir=:
|
||||
fi
|
||||
rmdir "$tmpdir/d" "$tmpdir"
|
||||
else
|
||||
# Remove any dirs left behind by ancient mkdir implementations.
|
||||
rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
|
||||
fi
|
||||
trap '' 0;;
|
||||
esac;;
|
||||
trap '' 0;;
|
||||
esac
|
||||
|
||||
if
|
||||
$posix_mkdir && (
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
|
||||
)
|
||||
then :
|
||||
else
|
||||
|
||||
# The umask is ridiculous, or mkdir does not conform to POSIX,
|
||||
# mkdir does not conform to POSIX,
|
||||
# or it failed possibly due to a race condition. Create the
|
||||
# directory the slow way, step by step, checking for races as we go.
|
||||
|
||||
case $dstdir in
|
||||
/*) prefix='/';;
|
||||
[-=\(\)!]*) prefix='./';;
|
||||
*) prefix='';;
|
||||
/*) prefix='/';;
|
||||
[-=\(\)!]*) prefix='./';;
|
||||
*) prefix='';;
|
||||
esac
|
||||
|
||||
eval "$initialize_posix_glob"
|
||||
|
||||
oIFS=$IFS
|
||||
IFS=/
|
||||
$posix_glob set -f
|
||||
set -f
|
||||
set fnord $dstdir
|
||||
shift
|
||||
$posix_glob set +f
|
||||
set +f
|
||||
IFS=$oIFS
|
||||
|
||||
prefixes=
|
||||
|
||||
for d
|
||||
do
|
||||
test X"$d" = X && continue
|
||||
test X"$d" = X && continue
|
||||
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask=$mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
prefix=$prefix$d
|
||||
if test -d "$prefix"; then
|
||||
prefixes=
|
||||
else
|
||||
if $posix_mkdir; then
|
||||
(umask $mkdir_umask &&
|
||||
$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
|
||||
# Don't fail if two instances are running concurrently.
|
||||
test -d "$prefix" || exit 1
|
||||
else
|
||||
case $prefix in
|
||||
*\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
|
||||
*) qprefix=$prefix;;
|
||||
esac
|
||||
prefixes="$prefixes '$qprefix'"
|
||||
fi
|
||||
fi
|
||||
prefix=$prefix/
|
||||
done
|
||||
|
||||
if test -n "$prefixes"; then
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
# Don't fail if two instances are running concurrently.
|
||||
(umask $mkdir_umask &&
|
||||
eval "\$doit_exec \$mkdirprog $prefixes") ||
|
||||
test -d "$dstdir" || exit 1
|
||||
obsolete_mkdir_used=true
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
@@ -450,14 +449,25 @@ do
|
||||
else
|
||||
|
||||
# Make a couple of temp file names in the proper directory.
|
||||
dsttmp=$dstdir/_inst.$$_
|
||||
rmtmp=$dstdir/_rm.$$_
|
||||
dsttmp=${dstdirslash}_inst.$$_
|
||||
rmtmp=${dstdirslash}_rm.$$_
|
||||
|
||||
# Trap to clean up those temp files at exit.
|
||||
trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
|
||||
|
||||
# Copy the file name to the temp name.
|
||||
(umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
(umask $cp_umask &&
|
||||
{ test -z "$stripcmd" || {
|
||||
# Create $dsttmp read-write so that cp doesn't create it read-only,
|
||||
# which would cause strip to fail.
|
||||
if test -z "$doit"; then
|
||||
: >"$dsttmp" # No need to fork-exec 'touch'.
|
||||
else
|
||||
$doit touch "$dsttmp"
|
||||
fi
|
||||
}
|
||||
} &&
|
||||
$doit_exec $cpprog "$src" "$dsttmp") &&
|
||||
|
||||
# and set any options; do chmod last to preserve setuid bits.
|
||||
#
|
||||
@@ -472,20 +482,24 @@ do
|
||||
|
||||
# If -C, don't bother to copy if it wouldn't change the file.
|
||||
if $copy_on_change &&
|
||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||
|
||||
eval "$initialize_posix_glob" &&
|
||||
$posix_glob set -f &&
|
||||
old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` &&
|
||||
new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` &&
|
||||
set -f &&
|
||||
set X $old && old=:$2:$4:$5:$6 &&
|
||||
set X $new && new=:$2:$4:$5:$6 &&
|
||||
$posix_glob set +f &&
|
||||
|
||||
set +f &&
|
||||
test "$old" = "$new" &&
|
||||
$cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
|
||||
then
|
||||
rm -f "$dsttmp"
|
||||
else
|
||||
# If $backupsuffix is set, and the file being installed
|
||||
# already exists, attempt a backup. Don't worry if it fails,
|
||||
# e.g., if mv doesn't support -f.
|
||||
if test -n "$backupsuffix" && test -f "$dst"; then
|
||||
$doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
|
||||
fi
|
||||
|
||||
# Rename the file to the real destination.
|
||||
$doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
|
||||
|
||||
@@ -493,24 +507,24 @@ do
|
||||
# to itself, or perhaps because mv is so ancient that it does not
|
||||
# support -f.
|
||||
{
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
test ! -f "$dst" ||
|
||||
$doit $rmcmd -f "$dst" 2>/dev/null ||
|
||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||
{ $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
|
||||
} ||
|
||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
} &&
|
||||
# Now remove or move aside any old file at destination location.
|
||||
# We try this two ways since rm can't unlink itself on some
|
||||
# systems and the destination file might be busy for other
|
||||
# reasons. In this case, the final cleanup might fail but the new
|
||||
# file should still install successfully.
|
||||
{
|
||||
test ! -f "$dst" ||
|
||||
$doit $rmcmd "$dst" 2>/dev/null ||
|
||||
{ $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
|
||||
{ $doit $rmcmd "$rmtmp" 2>/dev/null; :; }
|
||||
} ||
|
||||
{ echo "$0: cannot unlink or rename $dst" >&2
|
||||
(exit 1); exit 1
|
||||
}
|
||||
} &&
|
||||
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
# Now rename the file to the real destination.
|
||||
$doit $mvcmd "$dsttmp" "$dst"
|
||||
}
|
||||
fi || exit 1
|
||||
|
||||
@@ -519,9 +533,9 @@ do
|
||||
done
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "scriptversion="
|
||||
# time-stamp-format: "%:y-%02m-%02d.%02H"
|
||||
# time-stamp-time-zone: "UTC"
|
||||
# time-stamp-time-zone: "UTC0"
|
||||
# time-stamp-end: "; # UTC"
|
||||
# End:
|
||||
|
||||
@@ -126,7 +126,6 @@ CC = @CC@
|
||||
CCDEPMODE = @CCDEPMODE@
|
||||
CFLAGS = @CFLAGS@
|
||||
CHANGELOG_CMD = @CHANGELOG_CMD@
|
||||
CPP = @CPP@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CWARNFLAGS = @CWARNFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
@@ -137,11 +136,9 @@ DRIVER_MAN_SUFFIX = @DRIVER_MAN_SUFFIX@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EGREP = @EGREP@
|
||||
EXEEXT = @EXEEXT@
|
||||
FILE_MAN_DIR = @FILE_MAN_DIR@
|
||||
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
|
||||
GREP = @GREP@
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_CMD = @INSTALL_CMD@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
|
||||
@@ -51,10 +51,17 @@ disables Xrender and draws traditional eyes.
|
||||
.TP 8
|
||||
.B \-distance
|
||||
uses an alternative mapping, as if the eyes were set back from the screen, thus following the mouse more precisely.
|
||||
.TP 8
|
||||
.B \-biblicallyAccurate
|
||||
renders the eyes as if they belonged to a biblically accurate angel.
|
||||
.TP 8
|
||||
.B \-help
|
||||
print a usage message and exit.
|
||||
.TP 8
|
||||
.B \-version
|
||||
print the version number and exit.
|
||||
.SH "SEE ALSO"
|
||||
X(__miscmansuffix__), X Toolkit documentation
|
||||
.br
|
||||
See \fIX(__miscmansuffix__)\fP for a full statement of rights and permissions.
|
||||
.SH AUTHOR
|
||||
Keith Packard, MIT X Consortium
|
||||
.br
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* header file for transformed coordinate system. No rotations
|
||||
* supported, as elipses cannot be rotated in X.
|
||||
* supported, as ellipses cannot be rotated in X.
|
||||
*/
|
||||
|
||||
typedef struct _transform {
|
||||
|
||||
@@ -44,24 +44,24 @@ from the X Consortium.
|
||||
/* Exit with message describing command line format */
|
||||
|
||||
static void _X_NORETURN
|
||||
usage(void)
|
||||
usage(int exitval)
|
||||
{
|
||||
fprintf(stderr,
|
||||
"usage: xeyes\n"
|
||||
" [-display [{host}]:[{vs}]]\n"
|
||||
" [-geometry [{width}][x{height}][{+-}{xoff}[{+-}{yoff}]]]\n"
|
||||
" [-fg {color}] [-bg {color}] [-bd {color}] [-bw {pixels}]\n"
|
||||
" [-shape | +shape] [-outline {color}] [-center {color}]\n"
|
||||
" [-backing {backing-store}] [-distance]\n");
|
||||
"usage: xeyes [-display [{host}]:{vs}]\n"
|
||||
" [-geometry [{width}][x{height}][{+-}{xoff}[{+-}{yoff}]]]\n"
|
||||
" [-fg {color}] [-bg {color}] [-bd {color}] [-bw {pixels}]\n"
|
||||
" [-shape | +shape] [-outline {color}] [-center {color}]\n"
|
||||
" [-backing {backing-store}] [-distance]\n"
|
||||
" [-biblicallyAccurate]\n"
|
||||
#ifdef XRENDER
|
||||
fprintf(stderr,
|
||||
" [-render | +render]\n");
|
||||
" [-render | +render]\n"
|
||||
#endif
|
||||
#ifdef PRESENT
|
||||
fprintf(stderr,
|
||||
" [-present | +present]\n");
|
||||
" [-present | +present]\n"
|
||||
#endif
|
||||
exit(1);
|
||||
" xeyes -help\n"
|
||||
" xeyes -version\n");
|
||||
exit(exitval);
|
||||
}
|
||||
|
||||
/* Command line options table. Only resources are entered here...there is a
|
||||
@@ -82,6 +82,7 @@ static XrmOptionDescRec options[] = {
|
||||
{(char *)"+present", (char *)"*eyes.present", XrmoptionNoArg, (char *)"FALSE"},
|
||||
#endif
|
||||
{(char *)"-distance", (char *)"*eyes.distance", XrmoptionNoArg, (char *)"TRUE"},
|
||||
{(char *)"-biblicallyAccurate", (char *)"*eyes.biblicallyAccurate", XrmoptionNoArg, (char *)"TRUE"},
|
||||
};
|
||||
|
||||
static Atom wm_delete_window;
|
||||
@@ -113,10 +114,36 @@ main(int argc, char **argv)
|
||||
|
||||
XtSetLanguageProc(NULL, (XtLanguageProc) NULL, NULL);
|
||||
|
||||
/* Handle args that don't require opening a display */
|
||||
for (int n = 1; n < argc; n++) {
|
||||
const char *argn = argv[n];
|
||||
/* accept single or double dash for -help & -version */
|
||||
if (argn[0] == '-' && argn[1] == '-') {
|
||||
argn++;
|
||||
}
|
||||
if (strcmp(argn, "-help") == 0) {
|
||||
usage(0);
|
||||
}
|
||||
if (strcmp(argn, "-version") == 0) {
|
||||
puts(PACKAGE_STRING);
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
toplevel = XtAppInitialize(&app_context, "XEyes",
|
||||
options, XtNumber(options), &argc, argv,
|
||||
NULL, arg, (Cardinal) 0);
|
||||
if (argc != 1) usage();
|
||||
|
||||
if (argc != 1) {
|
||||
fputs("Unknown argument(s):", stderr);
|
||||
for (int n = 1; n < argc; n++) {
|
||||
if ((n < (argc -1)) || (argv[n][0] == '-')) {
|
||||
fprintf(stderr, " %s", argv[n]);
|
||||
}
|
||||
}
|
||||
fputs("\n\n", stderr);
|
||||
usage(1);
|
||||
}
|
||||
|
||||
wm_delete_window = XInternAtom(XtDisplay(toplevel), "WM_DELETE_WINDOW",
|
||||
False);
|
||||
|
||||
Reference in New Issue
Block a user