Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
PATCH: Re: NUMERIC_GLOB_SORT wish
- X-seq: zsh-users 2713
- From: Sven Wischnowsky <wischnow@xxxxxxxxxxxxxxxxxxxxxxx>
- To: zsh-users@xxxxxxxxxxxxxx
- Subject: PATCH: Re: NUMERIC_GLOB_SORT wish
- Date: Mon, 1 Nov 1999 09:00:05 +0100 (MET)
- In-reply-to: Nemeth Ervin's message of 27 Oct 1999 12:09:53 +0200
- Mailing-list: contact zsh-users-help@xxxxxxxxxxxxxx; run by ezmlm
[ Sorry for sending a patch to -users, but it's quite small... ]
Nemeth Ervin wrote:
> Hi,
>
> I don't know if zsh 3.1.* has this feature, but in 3.0.* it is not documented:
>
> It would be splendid to turn on NUMERIC_GLOB_SORT in any globbing with a
> globbing qualifier.
>
> What do you think?
Hm, it's a bit irritating that we can't do that yet, given that we can
set the other globbing specific options via qualifiers. It's quite
easy to implement, though.
To -workers:
The patch below implements that for 3.1.6-bart-7 (it will not work for
any 3.0.x, I think). For now I took the letter `n'. This is a bit ugly
because all other qualifiers that locally set options use upper case
letters. The other free upper case letters are: BCFHJKPQVYZ. Any suggestions?
Bye
Sven
diff -u oldsrc/glob.c Src/glob.c
--- oldsrc/glob.c Fri Oct 29 21:15:13 1999
+++ Src/glob.c Fri Oct 29 20:56:26 1999
@@ -139,6 +139,7 @@
int gd_qualct, gd_qualorct;
int gd_range, gd_amc, gd_units;
int gd_gf_nullglob, gd_gf_markdirs, gd_gf_noglobdots, gd_gf_listtypes;
+ int gd_gf_numsort;
int gd_gf_follow, gd_gf_sorts, gd_gf_nsorts, gd_gf_sortlist[11];
char *gd_glob_pre, *gd_glob_suf;
@@ -165,6 +166,7 @@
#define gf_markdirs (curglobdata.gd_gf_markdirs)
#define gf_noglobdots (curglobdata.gd_gf_noglobdots)
#define gf_listtypes (curglobdata.gd_gf_listtypes)
+#define gf_numsort (curglobdata.gd_gf_numsort)
#define gf_follow (curglobdata.gd_gf_follow)
#define gf_sorts (curglobdata.gd_gf_sorts)
#define gf_nsorts (curglobdata.gd_gf_nsorts)
@@ -899,6 +901,7 @@
gf_markdirs = isset(MARKDIRS);
gf_listtypes = gf_follow = 0;
gf_noglobdots = unset(GLOBDOTS);
+ gf_numsort = isset(NUMERICGLOBSORT);
gf_sorts = gf_nsorts = 0;
/* Check for qualifiers */
@@ -1176,6 +1179,10 @@
/* Glob dots: match leading dots implicitly */
gf_noglobdots = sense & 1;
break;
+ case 'n':
+ /* Numeric glob sort */
+ gf_numsort = !(sense & 1);
+ break;
case 'a':
/* Access time in given range */
g_amc = 0;
@@ -1413,7 +1420,7 @@
#ifndef HAVE_STRCOLL
cmp = (int)STOUC(*c) - (int)STOUC(*d);
#endif
- if (isset(NUMERICGLOBSORT) && (idigit(*c) || idigit(*d))) {
+ if (gf_numsort && (idigit(*c) || idigit(*d))) {
for (; c > *b && idigit(c[-1]); c--, d--);
if (idigit(*c) && idigit(*d)) {
while (*c == '0')
diff -u olddoc/Zsh/expn.yo Doc/Zsh/expn.yo
--- olddoc/Zsh/expn.yo Fri Oct 29 21:15:35 1999
+++ Doc/Zsh/expn.yo Fri Oct 29 21:02:07 1999
@@ -1598,6 +1598,10 @@
sets the tt(GLOB_DOTS) option for the current pattern
pindex(GLOB_DOTS, setting in pattern)
)
+item(tt(n))(
+sets the tt(NUMERIC_GLOB_SORT) option for the current pattern
+pindex(NUMERIC_GLOB_SORT, setting in pattern)
+)
item(tt(o)var(c))(
specifies how the names of the files should be sorted. If var(c) is
tt(n) they are sorted by name (the default), if it is tt(L) they
--
Sven Wischnowsky wischnow@xxxxxxxxxxxxxxxxxxxxxxx
Messages sorted by:
Reverse Date,
Date,
Thread,
Author