You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
153 lines
4.4 KiB
153 lines
4.4 KiB
--- a/colors.c
|
|
+++ b/colors.c
|
|
@@ -37,6 +37,10 @@
|
|
#include "posixstat.h" // stat related macros (S_ISREG, ...)
|
|
#include <fcntl.h> // S_ISUID
|
|
|
|
+#ifndef S_ISDIR
|
|
+#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
|
+#endif
|
|
+
|
|
// strlen()
|
|
#if defined (HAVE_STRING_H)
|
|
# include <string.h>
|
|
@@ -182,12 +186,17 @@ _rl_print_color_indicator (const char *f
|
|
if (S_ISREG (mode))
|
|
{
|
|
colored_filetype = C_FILE;
|
|
-
|
|
+#ifdef S_ISUID
|
|
if ((mode & S_ISUID) != 0 && is_colored (C_SETUID))
|
|
colored_filetype = C_SETUID;
|
|
- else if ((mode & S_ISGID) != 0 && is_colored (C_SETGID))
|
|
+ else
|
|
+#endif
|
|
+#ifdef S_ISGID
|
|
+ if ((mode & S_ISGID) != 0 && is_colored (C_SETGID))
|
|
colored_filetype = C_SETGID;
|
|
- else if (is_colored (C_CAP) && 0) //f->has_capability)
|
|
+ else
|
|
+#endif
|
|
+ if (is_colored (C_CAP) && 0) //f->has_capability)
|
|
colored_filetype = C_CAP;
|
|
else if ((mode & S_IXUGO) != 0 && is_colored (C_EXEC))
|
|
colored_filetype = C_EXEC;
|
|
@@ -211,12 +220,16 @@ _rl_print_color_indicator (const char *f
|
|
colored_filetype = C_STICKY;
|
|
#endif
|
|
}
|
|
+#if defined (S_ISLNK)
|
|
else if (S_ISLNK (mode))
|
|
colored_filetype = C_LINK;
|
|
+#endif
|
|
else if (S_ISFIFO (mode))
|
|
colored_filetype = C_FIFO;
|
|
+#if defined (S_ISSOCK)
|
|
else if (S_ISSOCK (mode))
|
|
colored_filetype = C_SOCK;
|
|
+#endif
|
|
else if (S_ISBLK (mode))
|
|
colored_filetype = C_BLK;
|
|
else if (S_ISCHR (mode))
|
|
--- a/histfile.c
|
|
+++ b/histfile.c
|
|
@@ -606,12 +606,14 @@ history_truncate_file (fname, lines)
|
|
history_lines_written_to_file = 0;
|
|
}
|
|
|
|
+#if defined (HAVE_CHOWN)
|
|
/* Make sure the new filename is owned by the same user as the old. If one
|
|
user is running this, it's a no-op. If the shell is running after sudo
|
|
with a shared history file, we don't want to leave the history file
|
|
owned by root. */
|
|
if (rv == 0 && exists)
|
|
r = chown (filename, finfo.st_uid, finfo.st_gid);
|
|
+#endif
|
|
|
|
xfree (filename);
|
|
FREE (tempname);
|
|
@@ -753,12 +755,14 @@ mmap_error:
|
|
history_lines_written_to_file = 0;
|
|
}
|
|
|
|
+#if defined (HAVE_CHOWN)
|
|
/* Make sure the new filename is owned by the same user as the old. If one
|
|
user is running this, it's a no-op. If the shell is running after sudo
|
|
with a shared history file, we don't want to leave the history file
|
|
owned by root. */
|
|
if (rv == 0 && exists)
|
|
mode = chown (histname, finfo.st_uid, finfo.st_gid);
|
|
+#endif
|
|
|
|
FREE (histname);
|
|
FREE (tempname);
|
|
--- a/input.c
|
|
+++ b/input.c
|
|
@@ -71,6 +71,10 @@ extern int errno;
|
|
#include "rlshell.h"
|
|
#include "xmalloc.h"
|
|
|
|
+#if defined (__MINGW32__)
|
|
+#include <conio.h>
|
|
+#endif
|
|
+
|
|
/* What kind of non-blocking I/O do we have? */
|
|
#if !defined (O_NDELAY) && defined (O_NONBLOCK)
|
|
# define O_NDELAY O_NONBLOCK /* Posix style */
|
|
--- a/posixstat.h
|
|
+++ b/posixstat.h
|
|
@@ -78,30 +78,44 @@
|
|
|
|
#if defined (S_IFBLK) && !defined (S_ISBLK)
|
|
#define S_ISBLK(m) (((m)&S_IFMT) == S_IFBLK) /* block device */
|
|
+#elif !defined (S_IFBLK)
|
|
+#define S_ISBLK(m) 0
|
|
#endif
|
|
|
|
#if defined (S_IFCHR) && !defined (S_ISCHR)
|
|
#define S_ISCHR(m) (((m)&S_IFMT) == S_IFCHR) /* character device */
|
|
+#elif !defined (S_IFCHR)
|
|
+#define S_ISCHR(m) 0
|
|
#endif
|
|
|
|
#if defined (S_IFDIR) && !defined (S_ISDIR)
|
|
#define S_ISDIR(m) (((m)&S_IFMT) == S_IFDIR) /* directory */
|
|
+#elif !defined (S_IFDIR)
|
|
+#define S_ISDIR(m) 0
|
|
#endif
|
|
|
|
#if defined (S_IFREG) && !defined (S_ISREG)
|
|
#define S_ISREG(m) (((m)&S_IFMT) == S_IFREG) /* file */
|
|
+#elif !defined (S_IFREG)
|
|
+#define S_ISREG(m) 0
|
|
#endif
|
|
|
|
#if defined (S_IFIFO) && !defined (S_ISFIFO)
|
|
#define S_ISFIFO(m) (((m)&S_IFMT) == S_IFIFO) /* fifo - named pipe */
|
|
+#elif !defined (S_IFIFO)
|
|
+#define S_ISFIFO(m) 0
|
|
#endif
|
|
|
|
#if defined (S_IFLNK) && !defined (S_ISLNK)
|
|
#define S_ISLNK(m) (((m)&S_IFMT) == S_IFLNK) /* symbolic link */
|
|
+#elif !defined (S_IFLNK)
|
|
+#define S_ISLNK(m) 0
|
|
#endif
|
|
|
|
#if defined (S_IFSOCK) && !defined (S_ISSOCK)
|
|
#define S_ISSOCK(m) (((m)&S_IFMT) == S_IFSOCK) /* socket */
|
|
+#elif !defined (S_IFSOCK)
|
|
+#define S_ISSOCK(m) 0
|
|
#endif
|
|
|
|
/*
|
|
@@ -137,6 +151,8 @@
|
|
/* These are non-standard, but are used in builtins.c$symbolic_umask() */
|
|
#define S_IRUGO (S_IRUSR | S_IRGRP | S_IROTH)
|
|
#define S_IWUGO (S_IWUSR | S_IWGRP | S_IWOTH)
|
|
+#if defined(S_IXUSR) && defined(S_IXOTH)
|
|
#define S_IXUGO (S_IXUSR | S_IXGRP | S_IXOTH)
|
|
+#endif
|
|
|
|
#endif /* _POSIXSTAT_H_ */
|