ARC infrastructure ate the materials for this case. The case timeout is extended to April 22, 2009, as a result.
The proposal follows. Note that this case is submitted on behalf of Jason King, and is seeking patch binding, but expects only to push to OpenSolaris/Nevada at this point. Template Version: @(#)onepager.txt 1.31 07/08/08 SMI This information is Copyright 2007 Sun Microsystems 1. Introduction 1.1. Project/Component Working Name: ls enhancements 1.2. Name of Document Author/Supplier: Jason King <jason at ansipunx.net> 1.3. Date of This Document: 03/01/2009 1.4. Name of Major Document Customer(s)/Consumer(s): 1.4.1. The Community you expect to review your project: ON 1.4.2. The ARC(s) you expect to review your project: 1.5. Email Aliases: 1.5.2. Responsible Engineer: 1.5.4. Interest List: on-discuss at opensolaris.org 2. Project Summary 2.1. Project Description: Enhance ls to provide a number of features to increase compatibility with other ls implementations (with an emphasis on GNU ls). This is a combination of new flags and long aliases for existing flags. The project is requesting patch binding. 2.2. Risks and Assumptions: 3. Business Summary 3.1. Problem Area: The Solaris ls is missing a number of features found in other ls implementations. Color output is an especially popular missing feature. 3.2. Market/Requester: Opensolaris community 3.3. Business Justification: The current situation is a worst of all worlds situation. Common features found on other OSes are missing in Solaris ls. GNU ls does not support a number of key features in Solaris (NFS/ZFS ACLs and extended attributes). This leaves a user to choose one or the other. This project proposes to enhance Solaris to support a number of common GNU ls features (detailed below) 3.4. Competitive Analysis: 3.5. Opportunity Window/Exposure: 3.6. How will you know when you are done?: Solaris ls will support the listed features below. 4. Technical Description: 4.1. Details: The following flags will be added to ls(1) (/usr/bin/ls, /usr/xpg4/bin/ls, and /usr/xpg6/bin/ls): Aliases for existing flags: --all Alias for -a --almost-all Alias for -A --escape Alias for -b --classify Alias for -F --human-readable Alias for -h --dereference Alias for -L --dereference-command-link Alias for -H --full-time Alias for -E --inode Alias for -i --numeric-uid-gid Alias for -n --no-group Alias for -o --hide-control-chars Alias for -q --reverse Alias for -r --recursive Alias for -R --size Alias for -s New flags: -w=NN, --width=NN Force output width to NN columns. --block-size=NN Output sizes as multiples of NN. The suffixes 'kKmMgGtTpPeE' can be appended to scale the block size. -k Equivalent to --block-size=1024. --si Like -h, except powers of 10 are used. --color[=WHEN], --colour[=WHEN] Display output using colors. Colors are specified by the environment variable LS_COLORS. If not set, a default set of colors used. The format of LS_COLORS is compatible with GNU ls. WHEN is an optional flag indicating when color output should be used. Valid values are: always,yes,force: Always output color auto,tty,if-tty: Display color when run from a tty never,no,none: Never display color. The default setting is 'never'. --file-type Like the -F / --classify option, except * is not appended to executables. --time-style=[STYLE] Use STYLE as the output format for times. Does not imply -l option (but will not have any visible impact without -l). The notion of 'new' and 'old' files are unchanged from the current version of ls. Values of STYLE are: full-iso: Full iso output for all files, like -E long-iso: Use '%F %R' format for all files (YYYY-mm-dd HH:MM) iso: Use '%F' (YYYY-mm-dd) for older files and '%m-%d %H:%M' (mm-DD HH:MM) for newer files. locale: Use the locale defined format for old and new files (the default). +FMT: Use a custom format. Values of FMT are the same as strftime(3c). If a newline is embedded in FMT, then the first line is used for older files while the second line is used for newer files. If no newline is embedded, the single format is used for all files. Argument processing is done via getopt_long_only(3c) to prevent standards conformance issues. 4.2. Bug/RFE Number(s): 1122699 *ls* ls: would like to have -k option like du does 6803941 Make /usr/bin/ls more compatible with gnu ls 4.3. In Scope: 4.4. Out of Scope: 4.5. Interfaces: External: libtermcap 4.6. Doc Impact: Man page changes for ls(1) with changes included with case. 4.7. Admin/Config Impact: Additional cmdline flags only. 4.8. HA Impact: None 4.9. I18N/L10N Impact: Additional messages. 4.10. Packaging & Delivery: None 4.11. Security Impact: None 4.12. Dependencies: None 5. Reference Documents: // List of related documents, if any (BugID's, RFP's, papers). // Explain how/where to obtain the documents, and what each // contains, not just their titles. Identify any related projects // (by ID or case number, if possible). 6. Resources and Schedule: 6.1. Projected Availability: // Dates in appropriate precision (quarters, years) 6.2. Cost of Effort: // Order of magnitude people and time for the *whole* project, not // just the development engineering part. // You may wish to split the estimate between feature // implementation, implementing adminsitrative Interfaces, unit // tests, documentation, support training material, i18n, etc. 6.4. Product Approval Committee requested information: 6.4.1. Consolidation or Component Name: 6.4.7. Target RTI Date/Release: // List target release & build and/or date. // RTI = Request to Integrate - when does *this* project // expect to be ready to integrate its changes back into // the master source tree? We are not asking when the // component wants to ship, but instead, when the // gatekeeper/PM needs to expect your changes to show up. // examples: S8u7_1, S9_45, Aug 2002... 6.4.8. Target Code Design Review Date: 6.5. ARC review type: SelfReview 6.6. ARC Exposure: open 6.6.1. Rationale: Part of OpenSolaris 7. Prototype Availability: 7.1. Prototype Availability: 7.2. Prototype Cost: