1
0
mirror of https://git.FreeBSD.org/ports.git synced 2024-12-04 01:48:54 +00:00
freebsd-ports/games/bsdgames/files/patch-hack
Martin Wilke 858884a7f0 - Update to 2.4
PR:		140478
Submitted by:	Ulrich Spoerlein <uqs@spoerlein.net> (maintainer)
2009-11-21 22:00:34 +00:00

52 lines
1.2 KiB
Plaintext

--- hack/hack.unix.c.orig 2009-09-24 10:46:30.000000000 +0200
+++ hack/hack.unix.c 2009-11-04 18:49:58.645035610 +0100
@@ -19,7 +19,9 @@
#include <sys/types.h> /* for time_t and stat */
#include <sys/stat.h>
+#include <sys/param.h>
#include <time.h>
+#include <err.h>
static struct tm *getlt(void);
static bool veryold(int);
@@ -95,13 +97,32 @@
void
gethdate(const char *name)
{
-/* old version - for people short of space */
-char *np;
+ char *p, *np, *path;
+ char filename[MAXPATHLEN+1];
- name = "/usr/games/hide/hack";
- if(stat(name, &hbuf))
- error("Cannot get status of %s.",
- (np = rindex(name, '/')) ? np+1 : name);
+ if (strchr(name, '/') != NULL || (p = getenv("PATH")) == NULL)
+ p = "";
+ np = path = strdup(p); /* Make a copy for strsep. */
+ if (path == NULL)
+ err(1, NULL);
+
+ for (;;) {
+ if ((p = strsep(&np, ":")) == NULL)
+ break;
+ if (*p == '\0') /* :: */
+ (void) strlcpy(filename, name, sizeof filename);
+ else
+ (void) snprintf(filename, sizeof filename,
+ "%s/%s", p, name);
+
+ if (stat(filename, &hbuf) == 0) {
+ free(path);
+ return;
+ }
+ }
+ error("Cannot get status of %s.",
+ (p = strrchr(name, '/')) ? p+1 : name);
+ free(path);
}
bool