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

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);
}
Previous Next