1 #ifndef _PROJENT_PROJENT_H
   2 #define _PROJENT_PROJENT_H
   3 
   4 #include <sys/types.h>
   5 #include <regex.h>
   6 #include <project.h>
   7 #include <sys/varargs.h>
   8 
   9 #include "lst.h"
  10 
  11 #define F_PAR_VLD       0x0001  /* Run validation after parsing */
  12 #define F_PAR_SPC       0x0002  /* Allow spaces between names */
  13 #define F_PAR_UNT       0x0004  /* Allow units in attribs values */
  14 #define F_PAR_RES       0x0008  /* Allow projid < 100 */
  15 #define F_PAR_DUP       0x0010  /* Allow duplicate projids */
  16 
  17 #define F_MOD_ADD       0x0100
  18 #define F_MOD_REM       0x0200
  19 #define F_MOD_SUB       0x0400
  20 #define F_MOD_REP       0x0800
  21 
  22 #ifdef  __cplusplus
  23 extern "C" {
  24 #endif
  25 
  26 
  27 typedef struct projent {
  28         char *projname;
  29         projid_t projid;
  30         char *comment;
  31         char *userlist;
  32         char *grouplist;
  33         lst_t *attrs;
  34 } projent_t;
  35 
  36 
  37 extern void projent_free(projent_t *);
  38 extern projent_t *projent_parse(char *, int, lst_t *);
  39 extern projent_t *projent_parse_components(char *, char *, char *, char *,
  40     char *, char *, int, lst_t *);
  41 extern int projent_validate(projent_t *, int, lst_t *);
  42 extern lst_t *projent_get_lst(char *, int, lst_t *);
  43 extern void projent_free_lst(lst_t *);
  44 extern int  projent_parse_name(char *, lst_t *);
  45 extern int  projent_validate_unique_name(lst_t *, char *, lst_t *);
  46 extern int  projent_parse_projid(char *, projid_t *, lst_t *);
  47 extern int  projent_validate_projid(projid_t, int, lst_t *);
  48 extern int  projent_validate_unique_id(lst_t *, projid_t, lst_t *);
  49 extern int  projent_parse_comment(char *, lst_t *);
  50 extern void projent_merge_usrgrp(char *, char **, char *, int, lst_t *);
  51 extern char *projent_parse_users(char *, int, lst_t *);
  52 extern char *projent_parse_groups(char *, int, lst_t *);
  53 extern void projent_merge_attributes(lst_t **, lst_t *, int, lst_t *);
  54 extern lst_t *projent_parse_attributes(char *, int, lst_t *);
  55 extern void projent_sort_attributes(lst_t *);
  56 extern void projent_free_attributes(lst_t *);
  57 extern char *projent_attrib_tostring(void *);
  58 extern char *projent_attrib_lst_tostring(lst_t *);
  59 extern void projent_put_lst(char *, lst_t *, lst_t *);
  60 
  61 #ifdef  __cplusplus
  62 }
  63 #endif
  64 
  65 #endif /* _PROJENT_PROJENT_H */