Coda Distributed File System
pdb.h
Go to the documentation of this file.
1#ifndef PDB_PDB_H
2#define PDB_PDB_H
3
4/* BLURB gpl
5
6 Coda File System
7 Release 6
8
9 Copyright (c) 1987-2016 Carnegie Mellon University
10 Additional copyrights listed below
11
12This code is distributed "AS IS" without warranty of any kind under
13the terms of the GNU General Public Licence Version 2, as shown in the
14file LICENSE. The technical and financial contributors to Coda are
15listed in the file CREDITS.
16
17 Additional copyrights
18
19 Copyright (C) 1998 John-Anthony Owens, Samuel Ieong, Rudi Seitz
20
21 This program is free software; you can redistribute it and/or modify
22 it under the terms of the GNU General Public License as published by
23 the Free Software Foundation; either version 2, or (at your option)
24 any later version.
25
26 This program is distributed in the hope that it will be useful,
27 but WITHOUT ANY WARRANTY; without even the implied warranty of
28 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
29 GNU General Public License for more details.
30
31*/
32
33#include <sys/types.h>
34#include "pdbarray.h"
35
36#define PDB_ISUSER(x) ((x) > 0)
37#define PDB_ISGROUP(x) ((x) < 0)
38
39#define PDB_MAXID_SET (0)
40#define PDB_MAXID_FORCE (1)
41
42typedef struct PDB_HANDLE_S *PDB_HANDLE;
43
44typedef struct {
46 char *name;
47 int32_t owner_id; /* used only for groups */
48 char *owner_name; /* used only for groups */
52
53 /*struct acl *pdbacl; */
55
56/* VHL functions */
57void PDB_addToGroup(int32_t id, int32_t groupId);
58void PDB_removeFromGroup(int32_t id, int32_t groupId);
59void PDB_changeName(int32_t id, char *name);
60void PDB_createUser(char *name, int32_t *newId);
61void PDB_cloneUser(char *name, int32_t cloneid, int32_t *newId);
62void PDB_deleteUser(int32_t id);
63void PDB_createGroup(char *name, int32_t owner, int32_t *newGroupId);
64void PDB_deleteGroup(int32_t groupId);
65void PDB_lookupByName(const char *name, int32_t *id);
66void PDB_lookupById(int32_t id, char **name);
67void PDB_changeId(int32_t oldid, int32_t newid);
68
69/* fix known problems in PDB profiles created by older versions of pdbtool */
70void PDB_bugfixes(void);
71
72/* internal packing functions */
73void pdb_pack(PDB_profile *r, void **data, size_t *size);
74void pdb_unpack(PDB_profile *r, void *data, size_t size);
75
76/* core PDB_ profile functions */
82void PDB_printProfile(FILE *out, PDB_profile *r);
84
85/* interface to the bottom end */
86PDB_HANDLE PDB_db_open(int mode);
89void PDB_db_release(void);
92void PDB_db_write(PDB_HANDLE h, int32_t id, char *name, void *buf, size_t size);
93void PDB_db_read(PDB_HANDLE h, int32_t id, const char *name, void **buf,
94 size_t *size);
95void PDB_db_delete(PDB_HANDLE h, int32_t id, char *name);
97int PDB_db_exists(void);
99int PDB_setupdb(void);
100int PDB_db_nextkey(PDB_HANDLE h, int *id);
101
102#endif
int int32_t
Definition: coda.h:104
gid
Definition: pwdtopdbtool.py:46
name
Definition: pwdtopdbtool.py:40
uid
Definition: pwdtopdbtool.py:40
void PDB_printProfile(FILE *out, PDB_profile *r)
Definition: pdbprofile.c:117
void PDB_readProfile(PDB_HANDLE h, int32_t id, PDB_profile *r)
Definition: pdbprofile.c:83
void PDB_db_delete_xfer(PDB_HANDLE h, char *name)
Definition: pdbdb.c:334
void PDB_createGroup(char *name, int32_t owner, int32_t *newGroupId)
Definition: pdb.c:268
void PDB_writeProfile(PDB_HANDLE h, PDB_profile *r)
Definition: pdbprofile.c:69
int PDB_db_exists(void)
Definition: pdbdb.c:346
struct PDB_HANDLE_S * PDB_HANDLE
Definition: pdb.h:42
void PDB_addToGroup(int32_t id, int32_t groupId)
Definition: pdb.c:47
void PDB_updateCps(PDB_HANDLE h, PDB_profile *r)
Definition: pdbprofile.c:167
void PDB_db_maxids(PDB_HANDLE h, int32_t *uid, int32_t *gid)
Definition: pdbdb.c:180
void PDB_changeId(int32_t oldid, int32_t newid)
Definition: pdb.c:530
void PDB_db_delete(PDB_HANDLE h, int32_t id, char *name)
Definition: pdbdb.c:325
void PDB_db_release(void)
Definition: pdbdb.c:170
void PDB_lookupById(int32_t id, char **name)
Definition: pdb.c:384
void pdb_unpack(PDB_profile *r, void *data, size_t size)
Definition: pdbpack.c:104
void PDB_cloneUser(char *name, int32_t cloneid, int32_t *newId)
Definition: pdb.c:190
int PDB_db_nextkey(PDB_HANDLE h, int *id)
Definition: pdbdb.c:134
void PDB_removeFromGroup(int32_t id, int32_t groupId)
Definition: pdb.c:85
void PDB_db_write(PDB_HANDLE h, int32_t id, char *name, void *buf, size_t size)
Definition: pdbdb.c:246
void PDB_db_update_maxids(PDB_HANDLE h, int32_t uid, int32_t gid, int mode)
Definition: pdbdb.c:205
void PDB_deleteUser(int32_t id)
Definition: pdb.c:239
void PDB_deleteGroup(int32_t groupId)
Definition: pdb.c:316
void PDB_createUser(char *name, int32_t *newId)
Definition: pdb.c:152
void PDB_deleteProfile(PDB_HANDLE h, PDB_profile *r)
Definition: pdbprofile.c:109
void PDB_db_read(PDB_HANDLE h, int32_t id, const char *name, void **buf, size_t *size)
Definition: pdbdb.c:276
void PDB_bugfixes(void)
Definition: pdb.c:419
void PDB_db_close(PDB_HANDLE h)
Definition: pdbdb.c:165
void PDB_db_compact(PDB_HANDLE h)
Definition: pdbdb.c:352
void PDB_freeProfile(PDB_profile *r)
Definition: pdbprofile.c:43
void pdb_pack(PDB_profile *r, void **data, size_t *size)
Definition: pdbpack.c:41
void PDB_changeName(int32_t id, char *name)
Definition: pdb.c:112
void PDB_db_reopen(PDB_HANDLE h)
Definition: pdbdb.c:122
PDB_HANDLE PDB_db_open(int mode)
Definition: pdbdb.c:73
void PDB_lookupByName(const char *name, int32_t *id)
Definition: pdb.c:370
void PDB_readProfile_byname(PDB_HANDLE h, const char *name, PDB_profile *r)
Definition: pdbprofile.c:96
int PDB_setupdb(void)
Definition: pdbdb.c:357
@ r
Definition: rvm_private.h:414
Definition: pdbdb.c:53
Definition: pdb.h:44
int32_t id
Definition: pdb.h:45
pdb_array cps
Definition: pdb.h:50
char * owner_name
Definition: pdb.h:48
pdb_array member_of
Definition: pdb.h:49
int32_t owner_id
Definition: pdb.h:47
pdb_array groups_or_members
Definition: pdb.h:51
char * name
Definition: pdb.h:46
Definition: pdbarray.h:40