File:  [Research Unix] / researchv10no / cmd / asd++ / decl.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 17:21:34 2018 UTC (8 years, 1 month ago) by root
Branches: belllabs, MAIN
CVS tags: researchv10, HEAD
researchv10 Norman

#include <String.h>
#include <list.h>

extern "C" {
	extern char *getenv(char *);
	extern int mkdir (char*, int);
	extern int rmdir (char*);
	int sleep (int);
	extern int getlogname (char*);
}

int mkdir (const String&, int);
int rmdir (const String&);


// decl.c

listdeclare (String)

struct mel {
	String p;
	String_list q;
	String s;
	bit operator== (const mel& x) const
		{ return p == x.p && q == x.q && s == x.s; }
	ostream& print (ostream&);
};

listdeclare (mel)

struct map {
	mel_list l;
	ostream& print (ostream&);
	istream& read (istream&);
};

inline ostream& operator<< (ostream& o, map& m) { return m.print (o); }
inline istream& operator>> (istream& i, map& m) { return m.read (i); }

String logname();

class charstr {
	char* p;
public:
	charstr (String s) {
		p = new char[s.length() + 1];
		s.dump (p);
	}
	~charstr() { delete p; }
	operator char*() { return p; };
private:
	charstr(const charstr&);
	void operator=(const charstr&);
};

// path.c

String pathnorm (String);

class Path {
	String s;
	friend Path mkpath(String);
public:
	Path() {}
	Path(const Path& p): s (p.s) {}
	Path(const String& st): s (pathnorm (st)) {}
	Path(const char *cp): s (pathnorm (String (cp))) {}
	Path& operator = (const Path& p) { s = p.s; return *this; }
	Path operator + (const Path& p) const { return s + p.s; }
	Path operator + (char *cp) const { return s + pathnorm (cp); }
	friend Path operator + (char *p, const Path& q)
		{ return Path (p) + q; }
	Path& operator += (const Path& p) { s += Path(p.s); return *this; }
	Path operator & (const Path&) const;
	Path operator & (const String& s) const { return *this & Path(s); }
	Path operator & (const char *cp) const { return *this & Path (cp); }
	friend Path operator & (const char *p, Path q)
		{ return Path (p) & q; }
	friend Path operator & (const char *p, String q)
		{ return Path (p) & Path(q); }
	friend Path operator & (const String& p, char* q)
		{ return Path(p) & q; }
	Path& operator &= (const Path& p) { *this = *this & p; return *this; }
	operator String () const { return s; }
	Path first() const;
	Path last() const;
	Path rmfirst() const;
	Path rmlast() const;
	friend ostream& operator <<(ostream&, const Path&);
	int operator < (const Path& t) const { return s < t.s; }
	int operator > (const Path& t) const { return s > t.s; }
	int operator <= (const Path& t) const { return s <= t.s; }
	int operator >= (const Path& t) const { return s >= t.s; }
	int operator == (const Path& t) const { return s == t.s; }
	int operator != (const Path& t) const { return s != t.s; }
	int operator < (char* t) const { return s < t; }
	int operator > (char* t) const { return s > t; }
	int operator <= (char* t) const { return s <= t; }
	int operator >= (char* t) const { return s >= t; }
	int operator == (char* t) const { return s == t; }
	int operator != (char* t) const { return s != t; }
	friend int operator < (char* p, const Path& q) { return p < q.s; }
	friend int operator > (char* p, const Path& q) { return p > q.s; }
	friend int operator <= (char* p, const Path& q) { return p <= q.s; }
	friend int operator >= (char* p, const Path& q) { return p >= q.s; }
	friend int operator == (char* p, const Path& q) { return p == q.s; }
	friend int operator != (char* p, const Path& q) { return p != q.s; }
};

Path homedir();

listdeclare(Path)

// lock.c

void lock (Path&);
void unlock (Path&);

// dir.c

int isdir (Path&);
Path_list dircontents (Path&);

// domach.c

String domach (String, Path, String_list&);

// checksum.c

static const cksize = 37;

class checksum {
	char buf[cksize];
	char *bufptr;
	char *bufend;
public:
	checksum();
	void combine (char*, int);
	int operator== (checksum&);
	int operator!= (checksum& c) { return !(*this == c); }
	friend int read (int fd, checksum& c)
		{ return ::read (fd, c.buf, cksize); }
	friend int write (int fd, checksum& c)
		{ return ::write (fd, c.buf, cksize); }
};

// param.c

extern char* spooldir;
extern char* etcdir;
extern char* inspkg;
extern char* tmpdir;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.