NAME

gspool_getspd - get the default permissions


SYNOPSIS

#include <gspool.h>

int gspool_getspd(const int fd, struct apisphdr *res)


DESCRIPTION

The gspool_getspd() function is used to retrieve the defaults privileges, form types etc for new users on the host with which the API is communicating.

fd is a file descriptor previously returned by gspool_open

res is a descriptor which upon return will contain the the default user privileges. The structure apisphdr is defined in gspool.h and contains the following elements:

Type Field Description
long sph_lastp Time last read password file
unsigned char sph_minp Minimum priority
unsigned char sph_maxp Maximum priority
unsigned char sph_defp Default priority
char [] sph_form Default form type
char [] sph_formallow Allowed form type pattern
char [] sph_ptr Default printer
char [] sph_ptrallow Allowed printer pattern
unsigned long sph_flgs Privilege flag
classcode_t sph_class Class of printers
unsigned char sph_cps Maximum copies allowed
unsigned char sph_version Release of GNUspool

The spu_flgs field will contain a combination of the following:

PV_ADMIN Administrator (edit admin file)
PV_SSTOP Can run sstop (can stop scheduler)
PV_FORMS Can use other forms than default
PV_CPRIO Can change priority on queue
PV_OTHERJ Can change other users' jobs
PV_PRINQ Can move to printer queue
PV_HALTGO Can halt, restart printer
PV_ANYPRIO Can set any priority on queue
PV_CDEFLT Can change own default priority
PV_ADDDEL Can add/delete printers
PV_COVER Can override class
PV_UNQUEUE Can unqueue jobs
PV_VOTHERJ Can view other jobs not neccesarily edit
PV_REMOTEJ Can access remote jobs
PV_REMOTEP Can access remote printers
PV_FREEZEOK Can save default options
PV_ACCESSOK Can access sub-screens
PV_OTHERP Can use other printers from default
ALLPRIVS A combination of all of the above


RETURN VALUES

The function returns 0 if successful otherwise one of the error codes listed in Chapter 3.


EXAMPLE

An example to view the default privleges on the host machine:

 int fd, ret;
 struct apisphdr res;
 fd = gspool_open("myhost", (char *) 0, 0);
 if (fd < 0) { /* error handling */
     ...
 }
 ret = gspool_getspd(fd, &res);
 if (ret < 0)  { /* error handling */
     ...
 }
 if (res.sph_flgs & PV_HALTGO)
     printf("users cannot stop and start printers\n");
 printf("the default maximum priority is %s\n", res);
 gspool_close(fd);


SEE ALSO

gspool_getspu(3), gspool_putspu(3), gspool_putspd(3).


AUTHOR

John M Collins, Xi Software Ltd.