mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-11 02:50:24 +00:00
858884a7f0
PR: 140478 Submitted by: Ulrich Spoerlein <uqs@spoerlein.net> (maintainer)
52 lines
1.2 KiB
Plaintext
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
|