Solaris Containers: Resource Management and Solaris Zones Developer's Guide

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:

#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);
}