//
// File: scolsign.h
//
// Modification history:
//$ FA(17/07/2001): Promoted to C/C++ header file
//

#ifndef _SCOLSIGN_H_
#define _SCOLSIGN_H_

/* structure d'un repertoire de packages */

#ifdef __cplusplus
extern "C" {
#endif

#define SIZESIGN 1024

struct Packdir
{
  char path[SIZESIGN];  /* se termine par '/' */
  int quota;   /* -1: read only, 0: unlimited */
  struct Packdir *next;
};
typedef struct Packdir *packdir;
#define SIZEPACKDIR sizeof(struct Packdir)

#define TYPESNONE  0
#define TYPESLOGIC 1
#define TYPESENV   2
#define TYPESMACH  3
#define TYPESCOOKIES 4

extern packdir Firstpack;
extern packdir Cachepack;

/* desalloue les packages */
int SPdesallocpackdir();

packdir SPinitpack();

int SPisname(int c, int l);

/* trouve un package dans la liste des packdir */
int SPfindfile(packdir p,char *sign,int *size,char *path);

/* ajout d'un fichier : trouve le chemin complet a partir du nom complet et 
  de la taille */
int SPaddfile(packdir p,char *sign,int size,char *path);

/* Signature d'un fichier. version1.0 */
int SCsign(mmachine m,char *src,int n,char *name,int typesign,char *sign);

/* calcul de typsign pour un nom de fichier 
   retourne -1 si erreur */
int SPgettypsign(char *total);

/* decoupe le nom en clair d'un nom de fichier
   retourne -1 si incorrect, 0 sinon */
int SPgetname(char *total,char *name);

/* complete le chemin d'un package */
int SPrefinePack(packdir p,char *n);

/* supprime les slash */
int SPslashtoback(char *p);

/* supprime les majuscules */
int SPkillmaj(char *p);

/* Signature incrémentale . version1.0 */
int SCincSignInit();
int SCincSign(char *buf,int n,char *sign);

extern char cookies[64];

int SPregistPart(char *name, char *param);

#ifdef __cplusplus
}
#endif

#endif // scolsign.h
