Date: Fri, 11 Feb 2000 01:06:28 +0000 From: "W.H.Scholten" <whs@xs4all.nl> To: tech@openbsd.org Cc: hackers@freebsd.org Subject: ls: alpha - numeric sorting Message-ID: <38A36094.794BDF32@xs4all.nl>
next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format. --------------1CFBAE3959E2B60015FB7483 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit L.S. Here are patches for FreeBSD's ls (from version 3.3 release) and OpenBSD's ls (version 2.6, didn't actually test this obsd patch as I'm working on a FreeBSD machine at the moment). What it does is add an option (yes another one) to sort alpha & numeric separately, i.e. instead of something like gsi-0.9.3p1.tgz gsi-0.9.3p10.tgz gsi-0.9.3p11.tgz gsi-0.9.3p12.tgz gsi-0.9.3p13.tgz gsi-0.9.3p14.tgz gsi-0.9.3p15.tgz gsi-0.9.3p16.tgz gsi-0.9.3p17.tgz gsi-0.9.3p18.tgz gsi-0.9.3p2.tgz gsi-0.9.3p3.tgz gsi-0.9.3p4.tgz gsi-0.9.3p5.tgz gsi-0.9.3p6.tgz gsi-0.9.3p7.tgz gsi-0.9.3p8.tgz gsi-0.9.3p9.tgz you will get: gsi-0.9.3p1.tgz gsi-0.9.3p2.tgz gsi-0.9.3p3.tgz gsi-0.9.3p4.tgz gsi-0.9.3p5.tgz gsi-0.9.3p6.tgz gsi-0.9.3p7.tgz gsi-0.9.3p8.tgz gsi-0.9.3p9.tgz gsi-0.9.3p10.tgz gsi-0.9.3p11.tgz gsi-0.9.3p12.tgz gsi-0.9.3p13.tgz gsi-0.9.3p14.tgz gsi-0.9.3p15.tgz gsi-0.9.3p16.tgz gsi-0.9.3p17.tgz gsi-0.9.3p18.tgz Much better! This would be great on ftp servers (trying to find the latest tgz for a given package in a list of around 50 or more is a nuisance with lexicographical ordering). The sort option is invoked with -n on fbsd, -N on obsd (change as you like...). I've also attached a complete little test program with debug output etc. The code could be improved by renaming some variables to longer names (couldn't think of any good ones ;) and probably the implementation too (haven't tried to optimize). Enjoy, Wouter --------------1CFBAE3959E2B60015FB7483 Content-Type: application/x-gzip; name="alpha_num_cmp.c.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="alpha_num_cmp.c.gz" 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 --------------1CFBAE3959E2B60015FB7483 Content-Type: application/x-gzip; name="whs_fbsd_ls.diff.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="whs_fbsd_ls.diff.gz" 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 --------------1CFBAE3959E2B60015FB7483 Content-Type: application/x-gzip; name="whs_obsd_ls.diff.gz" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="whs_obsd_ls.diff.gz" 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 f/ENbRUAAA== --------------1CFBAE3959E2B60015FB7483-- To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?38A36094.794BDF32>