Files
modules/lib/envmodules.h
Xavier Delaruelle 00e8d8c911 lib: call getgroups to determine number of groups
Update Envmodules_InitStateUsergroupsObjCmd to make a first dummy call
to "getgroups" function in order to retrieve the number of groups and
then be able to allocate the right array size.

With such change, our function does not rely anymore on sysconf function
and on NGROUPS_MAX and DEFAULT_MAXGROUPS defines.
2024-05-11 16:21:38 +02:00

55 lines
2.0 KiB
C

/*************************************************************************
*
* ENVMODULES.H, Modules Tcl extension library
* Copyright (C) 2018-2024 Xavier Delaruelle
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
************************************************************************/
#ifndef _ENVMODULES_H
#define _ENVMODULES_H 1
#include <tcl.h>
#define READ_BUFFER_SIZE 4096
#define FIRSTLINE_LENGTH 32
#define MODULES_MAGIC_COOKIE "#%Module"
/* Prototypes of internal functions. */
MODULE_SCOPE int Envmodules_ReadFileObjCmd (ClientData dummy,
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
MODULE_SCOPE int Envmodules_GetFilesInDirectoryObjCmd (ClientData dummy,
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
MODULE_SCOPE int Envmodules_InitStateUsernameObjCmd (ClientData dummy,
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
MODULE_SCOPE int Envmodules_InitStateUsergroupsObjCmd (ClientData dummy,
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
MODULE_SCOPE int Envmodules_InitStateClockSecondsObjCmd (ClientData dummy,
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
MODULE_SCOPE int Envmodules_ParseDateTimeArgObjCmd (ClientData dummy,
Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]);
/* Only the _Init function is exported. */
extern DLLEXPORT int Envmodules_Init (Tcl_Interp *interp);
#endif /* _ENVMODULES_H */
/* vim:set tabstop=3 shiftwidth=3 expandtab autoindent: */