Plan 9 from Bell Labs’s /usr/web/sources/contrib/steve/root/sys/src/cmd/cvsfs/cvsfs.h

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


enum {
	CHUNK = 32,		/* # Ents to malloc at a time */
	ATOMIC = 120,		/* ChnageLog events are atomic if this close (in sec) */
	DAY = 60*60*24,		/* grainularity of checkin dirs (in sec) */
	EXPIRY = 10,		/* Files flushed from cache if idle for this long (in min) */
	SNAPTIME = 60*60*4,	/* Offset from midnight when psudo-snaps take place (in sec) */
};

enum {			/* states for rlog parser */
	Slost,		/* where we are initially */
	Sfile,		/* file level info */
	Stags,		/* tags list */
	Sjunk,		/* junk stuff between keyword subs and revisions */
	Srevision,	/* revision details */
	Sbranches,	/* maybe branches: info, maybe not (ugh!) */
	Sdesc,		/* description of changes */

};

typedef struct Tag Tag;
struct Tag {
	Tag *next;	/* next in list */
	char *tag;	/* name of tag */
	char *rev;	/* revision name */
};


typedef struct Rev Rev;
struct Rev {
	Rev *next;
	long mtime;	/* time checked in */
	char *locker;	/* who locked the file or nil */
	char *author;	/* who checked in this revision */
	char *rev;	/* revision */
	char *desc;	/* description of this change */
	int added;	/* lines added since previous revision */
	int removed;	/* lines removed since previous revision */

	int mode;	/* file mode - only really known after checkout */
	Lock lock;	/* mutex between file service and cache flush */
	int epoch;	/* session epoch when this file was last read */
	int ref;	/* open ref count */
	long atime;	/* last access time */
	uvlong length;	/* file size */
	char *data;	/* file contents */
};

typedef struct View View;
struct View {
	char *path;	/* directory path to tag/revision */
	long mtime;	/* mod time of revision if non-zero */
	char *tag;	/* tag of revision if non-nil */
};

typedef struct Ent Ent;
struct Ent {
	char *path;	/* full remote file path */
	char *keysub;	/* keyword susbstution flags */
	char *head;	/* head revision name */
	Tag *tags;	/* list of tag names */
	Rev *revs;	/* revision info */
	long deleted;	/* !=0 -> when deleted, IE now in Attic */
};

typedef struct Sess Sess;
struct Sess {
	int fdin;
	int fdout;
	Biobuf *bin;	/* from network */
	Biobuf *bout;	/* to network */
	char *port;	/* port to dial */
	char *prog;	/* prog used to connect or nil if direct */
	char *root;	/* path (on remote host) to root of repository */
	char *logroot;	/* root remote host things the repository has in its logs */
	char *user;	/* username for direct TCP connection */
	char *keyp;	/* key params for ssh/rx connection */
	char *host;	/* host to connect to */
	char *method;	/* connection method name */
	Ent *ents;	/* one per file in repository */
	int nents;	/* number of above */
	View *views;	/* one per top level directory pair */
	int nviews;	/* number of above */
	int epoch;	/* session epoch, bumped on reconnect */
};

extern int Debug;
extern int Verbose;

/* mangle.c */
extern char *mangle(char *);

/* changelog.c */
extern char *changelog(Sess *);

/* cvs.c */
extern char *cvsopen(Sess *);
extern void cvsclose(Sess *);
extern int cvsrlog(Sess *, char *);
extern int cvscheckout(Sess *, char **, uvlong *, int *, char *, char *);

/* main.c */
extern char *path2D(char *);
extern void main(int, char *[]);

/* mangle.c */

/* str.c */
extern char *strheap(char *);
extern char *strgrow(char *, char *);
extern char *strpfx(char *, char *);
extern long str2date(char *);
extern int str2mode(char *p);

/* util.c */
extern int Bprnt(Biobufhdr *bp, char *fmt, ...);
extern char *Bgetline(Biobuf *);


Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].