Code Examples for Accessing project Database Entries
Example 2-1 Printing the First Three Fields of Each Entry in the
project Database
The key points for this example include the following:
setprojent() rewinds the project database to start at the beginning.
getprojent() is called with a conservative maximum buffer size that is defined in project.h.
endprojent() closes the project database and frees resources.
#include <project.h>
struct project projent;
char buffer[PROJECT_BUFSZ]; /* Use safe buffer size from project.h */
...
struct project *pp;
setprojent(); /* Rewind the project database to start at the beginning */
while (1) {
pp = getprojent(&projent, buffer, PROJECT_BUFSZ);
if (pp == NULL)
break;
printf("%s:%d:%s\n", pp->pj_name, pp->pj_projid, pp->pj_comment);
...
};
endprojent(); /* Close the database and free project resources */
Example 2-2 Getting a
project Database Entry That Matches the Caller's Project ID
The following example calls getprojbyid() to get a project database entry that matches
the caller's project ID. The example then prints the project name and the
project ID.
#include <project.h>
struct project *pj;
char buffer[PROJECT_BUFSZ]; /* Use safe buffer size from project.h */
main()
{
projid_t pjid;
pjid = getprojid();
pj = getprojbyid(pjid, &projent, buffer, PROJECT_BUFSZ);
if (pj == NULL) {
/* fail; */
}
printf("My project (name, id) is (%s, %d)\n", pp->pj_name, pp->pj_projid);
}