Go to main content

Resource Management and Oracle® Solaris Zones Developer's Guide

Exit Print View

Updated: October 2017
 
 

Code Examples for Accessing project Database Entries

Example 1  Printing the First Three Fields of Each Entry in the project Database

    Note the following key points for this example:

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