/* Text based printer configuration for the RHS install program */
/* Michael Fulbright - 1997                                     */
/*                                                              */

/* Most of this should be hidden in printercfg.c rather then exported
   to the world, but... -ewt */

#ifndef _RHS_PRINTERCFG_H

#define _RHS_PRINTERCFG_H


/* An entry in the 'printerdb' file, which describes each type of */
/* supported printer                                              */

struct prnDBEntry {
  char  *Entry;          /* Human-readable name of the entry       */
  char  *GSDriver;       /* gs driver used by this printer         */
  char  *Descr;          /* Single line description of printer     */
  char  *About;          /* Lengthy description of printer         */
  char **Resolution;     /* List of resolutions supported          */
  char **ResDescr;       /* Description of each resolution         */
  int    NumRes;         /* Length of list of resolutions          */
  char **BitsPerPixel;   /* List of color depths supported         */
  char **BppDescr;       /* Description of each color depth        */
  int    NumBpp;         /* Length of list of color depths         */
};
typedef struct prnDBEntry DBEntry;

/* A printcap entry */
/* Only represents a subset of possible options available */
/* Sufficient for the simple configuration we are interested in */
struct prnPCEntry {
    char *Queue;           /* Queue name, can have multi separated by '|' */
    char *SpoolDir;        /* Spool directory                             */
    char *Device;          /* Print device                                */
    char *IF;              /* input filter                                */
    char *AF;              /* accounting filter (needed for smbprint)     */
    
    char *Type;            /* Entry type - "LOCAL" "REMOTE" "SMB"         */
    
    /* these apply to all types and are not represented by printcap entry */

    /* following 4 are OBSOLETE */
#if 0
    char *PrinterDescr;    /* Engligh description of gsdriver             */
    char *PrinterType;     /* Database entry for this queue               */
    char *PrinterAbout;    /* Lengthy description                         */
    char *GSDriver;        /* ghostscript driver to use                   */
#endif
    /* replaced by */
    DBEntry *db;    /* entry in printer database for this printer  */
    char *Resolution;      /* ghostscript resolution to use               */
    char *PaperSize;       /* Papersize                                   */
    char *AutoEOF;         /* Indicates if EOF needed at EOJ, not used?   */
    char *BitsPerPixel;    /* ghostscript color option                    */
    char *CRLF;            /* Whether or not to do CR/LF xlation          */
    char *RevPages;        /* Reverse order of pages on output?           */
    
    /* REMOTE (lpd) printers only */
    char *RemoteHost;      /* Remote host (not used for all entries)      */
    char *RemoteQueue;     /* Queue on the remote machine                 */
    
    /* SMB (LAN Manager) only */
    char *SMBHost;         /* Server name (NMB name, can have spaces)      */
    char *SMBHostIP;       /* Can optional specify and IP address for host */
    char *SMBShare;        /* Name of share on the SMB server              */
    char *SMBUser;         /* User to log in as on SMB server              */
    char *SMBPasswd;       /* Corresponding password                       */
};
typedef struct prnPCEntry PCEntry;

/* location of the printer database in an installed system*/
#define PRINTER_DB_FILE "/usr/lib/rhs/rhs-printfilters/printerdb"
#define PRINTER_FILTER_DIR "/usr/lib/rhs/rhs-printfilters/"

/* different connx type */
#define LOCAL_CONNX      1
#define REMOTE_LPD_CONNX 2
#define SMB_CONNX        3

int doConfigurePrinters (char *theroot);

#endif
