Austin Group Defect Tracker

Aardvark Mark III

Viewing Issue Simple Details Jump to Notes ] Issue History ] Print ]
ID Category Severity Type Date Submitted Last Update
0001255 [1003.1(2016)/Issue7+TC2] System Interfaces Objection Enhancement Request 2019-06-08 12:31 2019-06-08 12:31
Reporter stephane View Status public  
Assigned To
Priority normal Resolution Open  
Status New  
Name Stephane Chazelas
User Reference
Section glob(), EXAMPLES section
Page Number 1111 (in the 2018 edition)
Line Number 37598
Interp Status ---
Final Accepted Text
Summary 0001255: improper shell code in glob() example
Description Even though it is not the main point of that example, the POSIX specification should avoid showing examples of bad shell coding practice.

Here, that:

   ls -l *.c

Should be:

   ls -ld -- *.c

As the obvious intention of that code is to list the attributes of the non-hidden files whose name ends in .c.

The example does say "approximately" which leaves it unclear in which way it differs. One of the differences in functionality is when the glob doesn't match any file, which could be easily addressed by adding the GLOB_NOCHECK flag.
Desired Action Replace all occurrences of "ls -l *.c" with "ls -ld -- *.c", "ls -l *.c *.h" with "ls -ld -- *.c *.h"

Change the first example to:

  globbuf.gl_offs = 3;
  if (glob("*.c", GLOB_DOOFFS|GLOB_NOCHECK, NULL, &globbuf)) abort();

  globbuf.gl_pathv[0] = "ls";
  globbuf.gl_pathv[1] = "-ld";
  globbuf.gl_pathv[2] = "--";

The second to:

  globbuf.gl_offs = 3;
  if (glob("*.c", GLOB_DOOFFS|GLOB_NOCHECK, NULL, &globbuf) ||
      glob("*.h", GLOB_DOOFFS|GLOB_NOCHECK|GLOB_APPEND, NULL, &globbuf)) abort();

Possibly clarify in which way it differs or does not differ from the sh equivalent. Like state that it should result in the execution of ls with the same list of arguments.
Tags No tags attached.
Attached Files

- Relationships

There are no notes attached to this issue.

- Issue History
Date Modified Username Field Change
2019-06-08 12:31 stephane New Issue
2019-06-08 12:31 stephane Name => Stephane Chazelas
2019-06-08 12:31 stephane Section => glob(), EXAMPLES section
2019-06-08 12:31 stephane Page Number => 1111 (in the 2018 edition)
2019-06-08 12:31 stephane Line Number => 37598

Mantis 1.1.6[^]
Copyright © 2000 - 2008 Mantis Group
Powered by Mantis Bugtracker