/*
Copyright © 1998, 1999 Lucent Technologies Inc.  All rights reserved.  
Revisions Copyright © 1999, 2000 Vita Nuova Limited.  All rights reserved.
Revisions Copyright © 2001 Norman Ramsey.  All rights reserved.  
*/
#include "mk.h"

void
bulkmtime(char *dir)
{
	char buf[8196];
	char *ss;
	char *s;
	Dir db;

	if (dir) {
		s = dir;
		if (strcmp(dir, "/") == 0)
			strcpy(buf, dir);
		else
			sprint(buf, "%s/", dir);
		if(mkdirstat(dir, &db) >= 0 && (db.qid.path&CHDIR) == 0){
			/* bugger off */
			fprintf(stderr, "mk: %s is not a directory path=%lux\n", dir, db.qid.path);
			Exit();
		}
	} else {
		s = ".";
		buf[0] = 0;
	}
	if (symlook(s, S_BULKED, 0))
		return;
	ss = strdup(s);
	symlook(ss, S_BULKED, (void *)ss);
	dirtime(s, buf);
}

long
mtime(char *name)
{
	Dir sbuf;
	char *s, *ss;
	char carry;

	s = utfrrune(name, '/');
	if (s == name)
		s++;
	if (s) {
		ss = name;
		carry = *s;
		*s = 0;
	} else {
		ss = 0;
		carry = 0;
	}
	bulkmtime(ss);
	if(carry)
		*s = carry;
	if(mkdirstat(name, &sbuf) < 0)
		return 0;
	return sbuf.mtime;
}

long
filetime(char *name)
{
	Symtab *sym;

	sym = symlook(name, S_TIME, 0);
	if (sym)
		return (long) sym->value;		/* uggh */
	return mtime(name);
}


syntax highlighted by Code2HTML, v. 0.9.1