Minutes of the 28th January 2021 Teleconference Austin-1098 Page 1 of 1 Submitted by Andrew Josey, The Open Group. 28th January 2021 Attendees: Nick Stoughton, USENIX, ISO/IEC JTC 1/SC 22 OR Eric Blake, Red Hat, The Open Group OR Geoff Clare, The Open Group Joerg Schilling Andrew Josey, The Open Group Mark Ziegast, SHware Systems Dev. Don Cragun, IEEE PASC OR Richard Hansen Apologies: Eric Ackermann, HPI, University of Potsdam * General news None * Outstanding actions (Please note that this section has been flushed to shorten the minutes - to locate the previous set of outstanding actions, look to the minutes from 13th June 2019 and earlier) Bug 1254: "asynchronous list" description uses "command" instead of "AND-OR list" OPEN https://austingroupbugs.net/view.php?id=1254 Action: Joerg to investigate how his shell behaves. Bug 700 - Nick to raise this issue with the C committee Bug 713 - Nick to raise with the C committee. Bug 739 - Nick to raise with the C committee. * Current Business Bug 1388: yacc description does not say who declares yyerror() and yylex() Accepted as Marked https://austingroupbugs.net/view.php?id=1388 This item is tagged for Issue 8 On page 3456 line 116732 section yacc (Code File), change: It also shall contain a copy of the #define statements in the header file. to: It also shall contain a copy of the #define statements in the header file, prior to any code copied from semantic actions in grammar, and the following function prototypes for the yyerror(), yylex(), and yyparse() functions, after any code copied from within %{ and %} in the declarations section in grammar and before any code copied from semantic actions in grammar: void yyerror(const char *); int yylex(void); int yyparse(void); The declarations of yyerror() and yylex() shall be protected by #ifndef or #if preprocessor statements such that each is only visible if a preprocessor macro with the name yyerror or yylex, respectively, is not already defined, where the yy in the macro names is replaced by sym_prefix if the -p sym_prefix option is used. On page 3456 line 116734 section yacc (Code File), add a new paragraph: The code file shall not contain a declaration of the main() function, unless one is present within %{ and %} in the declarations section in grammar. On page 3456 line 116739 section yacc (Header File), add a new sentence: The header file may also declare the yyparse() function, using a function prototype. It shall not declare the yyerror() and yylex() functions. On page 3465 line 117139 section yacc (Yacc Library), change: int yyerror(const char *s) to: void yyerror(const char *s) On page 3467 line 117217 section yacc (APPLICATION USAGE), add new paragraph: If yyerror() and yylex() are not defined within %{ and %} in the declarations section as functions or macros, nor in the programs section as functions, recommended practice is to declare them as functions in a separate header file and include that file in the declarations section, followed by #define yyerror yyerror and #define yylex yylex. This lets the separate header file be the definitive API for all code defining or using these functions. On page 3467 line 117239 section yacc (EXAMPLES), change: int yyerror(const char *msg) to: void yyerror(const char *msg) On page 3469 line 117335 section yacc (RATIONALE), add new paragraphs: Earlier versions of this standard did not require the code file created by yacc to contain declarations of yyerror(), yylex(), and yyparse(). This meant that portable applications that did not define them had to declare them in the grammar file, to ensure they would not be diagnosed by the compiler as being called without being declared, but this was not stated in those versions of the standard either. The standard developers decided it was preferable for yacc to include the declarations in the code file and this is now a requirement. However, the declarations of yyerror() and yylex() are only visible if a macro of the same name is not defined, which provides application writers with a way to suppress the declaration if desired (for example, in order to provide their own declaration that would conflict with the one written by yacc()). These functions are not declared in the header file because a macro definition in the declaration section would not be be able to suppress them there. Earlier versions of this standard were also silent about a declaration of main(). However, the equivalent solution was not adopted because a declaration of main() would only be needed if it is called recursively by an application. Although in theory an application could call the yacc library version of main() from code in a grammar file, it is questionable why any application (other than a test suite) would do so, in particular because that version of main() does not accept any arguments and it calls exit()—it does not return—and therefore is of little use recursively. An application that includes its own definition of main() could call it recursively, but can reasonably be expected to ensure it does not call main() without previously defining or declaring it. An additional complication is that main() has multiple different allowed prototypes. The standard developers decided the simplest solution was to disallow yacc from providing a declaration of main() in the code file. Bug #1389: Shell command search procedure is incorrect Duplicate of 854 https://austingroupbugs.net/view.php?id=1389 Bug #1445: Update "special built-in" to match changes from bug #854 Accepted https://austingroupbugs.net/view.php?id=1445 This item is tagged for Issue 8 Bug #1390: No method to invoke a non-standard built-in utility Rejected https://austingroupbugs.net/view.php?id=1390 "The standard as currently written provides no mechanism to allow such non-standard built-in utilities to be invoked." This was solved in Issue 8 draft 1 by allowing implementations to add to the list of intrinsic utilities. See XCU 1.7 (P2268 L73117) in the draft: "Whether any additional utility is considered an intrinsic utility is implementation-defined." All the implementation needs to do is document the additions. This practice is not recommended (through the use of "should not" on L73119) but is allowed. Bug #1391: Unclear language in specification of utilities implemented as functions Accepted as Marked https://austingroupbugs.net/view.php?id=1391 This item is tagged for TC3-2008. Change: If the implementation has provided a standard utility in the form of a function, it shall not be recognized at this point. to: If the implementation has provided a standard utility in the form of a function, and that function definition still exists (i.e. has not been rem Bug #1392: find(1): clarify whether -perm ops - and + should follow chmod OPEN https://austingroupbugs.net/view.php?id=1392 We started this item and will continue next time Gettext draft. We will return to this on a future call. The gettext draft in the etherpad is at https://posix.rhansen.org/p/gettext_draft https://posix.rhansen.org/p/gettext_split Next Steps ---------- The next calls are on: February 1st 2021 (Monday) This call will be for 60 minutes. February 4th 2020 (Thursday) This call will be for 90 minutes. Calls are anchored on US time. (8am Pacific) Please check the calendar invites for dial in details. Bugs are at: https://austingroupbugs.net An etherpad is usually up for the meeting, with a URL using the date format as below: https://posix.rhansen.org/p/20xx-mm-dd (For write access this uses The Open Group single sign on, for those individuals with gitlab.opengroup.org accounts. Please contact Andrew if you need to be setup)