Created
March 7, 2019 16:11
-
-
Save tuvior/21c346f87d5ae733abdc3fca2df009e5 to your computer and use it in GitHub Desktop.
even-better-ls on Arch Linux
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/lib/fflush.c b/lib/fflush.c | |
index 983ade0ff..a6edfa105 100644 | |
--- a/lib/fflush.c | |
+++ b/lib/fflush.c | |
@@ -33,7 +33,7 @@ | |
#undef fflush | |
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
/* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */ | |
static void | |
@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp) | |
#endif | |
-#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) | |
+#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) | |
# if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT | |
/* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ | |
@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream) | |
if (stream == NULL || ! freading (stream)) | |
return fflush (stream); | |
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
clear_ungetc_buffer_preserving_position (stream); | |
diff --git a/lib/fpending.c b/lib/fpending.c | |
index c84e3a5b4..789f50e4e 100644 | |
--- a/lib/fpending.c | |
+++ b/lib/fpending.c | |
@@ -32,7 +32,7 @@ __fpending (FILE *fp) | |
/* Most systems provide FILE as a struct and the necessary bitmask in | |
<stdio.h>, because they need it for implementing getc() and putc() as | |
fast macros. */ | |
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
return fp->_IO_write_ptr - fp->_IO_write_base; | |
#elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ | |
/* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ | |
diff --git a/lib/fpurge.c b/lib/fpurge.c | |
index b1d417c7a..3aedcc373 100644 | |
--- a/lib/fpurge.c | |
+++ b/lib/fpurge.c | |
@@ -62,7 +62,7 @@ fpurge (FILE *fp) | |
/* Most systems provide FILE as a struct and the necessary bitmask in | |
<stdio.h>, because they need it for implementing getc() and putc() as | |
fast macros. */ | |
-# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
fp->_IO_read_end = fp->_IO_read_ptr; | |
fp->_IO_write_ptr = fp->_IO_write_base; | |
/* Avoid memory leak when there is an active ungetc buffer. */ | |
diff --git a/lib/freadahead.c b/lib/freadahead.c | |
index c2ecb5b28..23ec76ee5 100644 | |
--- a/lib/freadahead.c | |
+++ b/lib/freadahead.c | |
@@ -30,7 +30,7 @@ extern size_t __sreadahead (FILE *); | |
size_t | |
freadahead (FILE *fp) | |
{ | |
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
if (fp->_IO_write_ptr > fp->_IO_write_base) | |
return 0; | |
return (fp->_IO_read_end - fp->_IO_read_ptr) | |
diff --git a/lib/freading.c b/lib/freading.c | |
index 73c28acdd..c24d0c88a 100644 | |
--- a/lib/freading.c | |
+++ b/lib/freading.c | |
@@ -31,7 +31,7 @@ freading (FILE *fp) | |
/* Most systems provide FILE as a struct and the necessary bitmask in | |
<stdio.h>, because they need it for implementing getc() and putc() as | |
fast macros. */ | |
-# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
return ((fp->_flags & _IO_NO_WRITES) != 0 | |
|| ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 | |
&& fp->_IO_read_base != NULL)); | |
diff --git a/lib/freadptr.c b/lib/freadptr.c | |
index 5aeadf3da..ffb801039 100644 | |
--- a/lib/freadptr.c | |
+++ b/lib/freadptr.c | |
@@ -29,7 +29,7 @@ freadptr (FILE *fp, size_t *sizep) | |
size_t size; | |
/* Keep this code in sync with freadahead! */ | |
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
if (fp->_IO_write_ptr > fp->_IO_write_base) | |
return NULL; | |
size = fp->_IO_read_end - fp->_IO_read_ptr; | |
diff --git a/lib/freadseek.c b/lib/freadseek.c | |
index e7b0c7bdb..5fd2dd7ca 100644 | |
--- a/lib/freadseek.c | |
+++ b/lib/freadseek.c | |
@@ -36,7 +36,7 @@ freadptrinc (FILE *fp, size_t increment) | |
/* Keep this code in sync with freadptr! */ | |
#if HAVE___FREADPTRINC /* musl libc */ | |
__freadptrinc (fp, increment); | |
-#elif defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+#elif defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
fp->_IO_read_ptr += increment; | |
#elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ | |
/* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ | |
diff --git a/lib/fseeko.c b/lib/fseeko.c | |
index 0101ab55f..193f4e8ce 100644 | |
--- a/lib/fseeko.c | |
+++ b/lib/fseeko.c | |
@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence) | |
#endif | |
/* These tests are based on fpurge.c. */ | |
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
if (fp->_IO_read_end == fp->_IO_read_ptr | |
&& fp->_IO_write_ptr == fp->_IO_write_base | |
&& fp->_IO_save_base == NULL) | |
@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence) | |
return -1; | |
} | |
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
fp->_flags &= ~_IO_EOF_SEEN; | |
fp->_offset = pos; | |
#elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ | |
diff --git a/lib/fseterr.c b/lib/fseterr.c | |
index 82649c3ac..adb637256 100644 | |
--- a/lib/fseterr.c | |
+++ b/lib/fseterr.c | |
@@ -29,7 +29,7 @@ fseterr (FILE *fp) | |
/* Most systems provide FILE as a struct and the necessary bitmask in | |
<stdio.h>, because they need it for implementing getc() and putc() as | |
fast macros. */ | |
-#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ | |
fp->_flags |= _IO_ERR_SEEN; | |
#elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ | |
/* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Minix 3, Android */ | |
diff --git a/lib/stdio-impl.h b/lib/stdio-impl.h | |
index 78d896e9f..05c5752a2 100644 | |
--- a/lib/stdio-impl.h | |
+++ b/lib/stdio-impl.h | |
@@ -18,6 +18,12 @@ | |
the same implementation of stdio extension API, except that some fields | |
have different naming conventions, or their access requires some casts. */ | |
+/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this | |
+ problem by defining it ourselves. FIXME: Do not rely on glibc | |
+ internals. */ | |
+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN | |
+# define _IO_IN_BACKUP 0x100 | |
+#endif | |
/* BSD stdio derived implementations. */ | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
COREUTILS_VER=8.29 | |
wget https://raw.githubusercontent.com/illinoisjackson/even-better-ls/master/ls_colors_generator.py | |
chmod 755 ls_colors_generator.py | |
sudo mv ls_colors_generator.py /usr/bin/ls_colors_generator | |
[ -d "coreutils-${COREUTILS_VER}" ] && \ | |
rm -rf coreutils-${COREUTILS_VER} | |
[ -f "coreutils-${COREUTILS_VER}.tar.xz" ] && \ | |
rm -f coreutils-${COREUTILS_VER}.tar.xz | |
wget https://ftp.gnu.org/gnu/coreutils/coreutils-${COREUTILS_VER}.tar.xz | |
tar -xf coreutils-${COREUTILS_VER}.tar.xz | |
rm coreutils-${COREUTILS_VER}.tar.xz | |
cd coreutils-${COREUTILS_VER} | |
patch -p0 < ../ls.patch | |
patch -p1 < ../glibc.patch | |
./configure | |
make | |
for bin in ls dir vdir; do | |
echo "Copying ${bin} to /usr/bin/${bin}-i" | |
sudo cp src/${bin} /usr/bin/${bin}-i | |
done |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- src/ls.c 2017-12-10 18:12:46.000000000 -0700 | |
+++ src/ls.c 2018-07-01 01:14:31.133443086 -0600 | |
@@ -4753,21 +4753,15 @@ | |
} | |
} | |
- /* Check the file's suffix only if still classified as C_FILE. */ | |
- ext = NULL; | |
- if (type == C_FILE) | |
+ /* Test if NAME has a recognized suffix. */ | |
+ len = strlen (name); | |
+ name += len; /* Pointer to final \0. */ | |
+ for (ext = color_ext_list; ext != NULL; ext = ext->next) | |
{ | |
- /* Test if NAME has a recognized suffix. */ | |
- | |
- len = strlen (name); | |
- name += len; /* Pointer to final \0. */ | |
- for (ext = color_ext_list; ext != NULL; ext = ext->next) | |
- { | |
- if (ext->ext.len <= len | |
- && STREQ_LEN (name - ext->ext.len, ext->ext.string, | |
- ext->ext.len)) | |
- break; | |
- } | |
+ if (ext->ext.len <= len | |
+ && STREQ_LEN (name - ext->ext.len, ext->ext.string, | |
+ ext->ext.len)) | |
+ break; | |
} | |
/* Adjust the color for orphaned symlinks. */ | |
@@ -4826,6 +4820,9 @@ | |
if (print_scontext) | |
len += 1 + (format == with_commas ? strlen (f->scontext) : scontext_width); | |
+ if (print_with_color) | |
+ len += 2; | |
+ | |
len += quote_name_width (f->name, filename_quoting_options, f->quoted); | |
if (indicator_style != none) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment