Plan 9 from Bell Labs’s /usr/web/sources/contrib/nemo/root/sys/src/cmd/tags/util.c

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


#include <u.h>
#include <libc.h>
#include "util.h"

int debug;

char*
estrdup(char* s)
{
	s = strdup(s);
	if(s == nil)
		sysfatal("estrdup: not enough memory");
	setmalloctag(s, getcallerpc(&s));
	return s;
}

void*
emallocz(int sz, int zero)
{
	void*	s;

	s = malloc(sz);
	if(s == nil)
		sysfatal("emalloc: not enough memory");
	setmalloctag(s, getcallerpc(&sz));
	if(zero)
		memset(s, 0, sz);
	return s;
}

void*
erealloc(void* p, int sz)
{

	p = realloc(p, sz);
	if(p == nil)
		sysfatal("erealloc: not enough memory");
	else
		setmalloctag(p, getcallerpc(&p));
	return p;
}

char*
cleanpath(char* file)
{
	char*	s;
	char*	t;
	char	cwd[512];

	assert(file && file[0]);
	if(file[1])
		file = strdup(file);
	else {
		s = file;
		file = malloc(3);
		file[0] = s[0];
		file[1] = 0;
		file[2] = 0;
	}
	s = cleanname(file);
	if(s[0] != '/'){
		getwd(cwd, sizeof(cwd));
		t = smprint("%s/%s", cwd, s);
		free(s);
		cleanname(t);
		return t;
	} else
		return s;
}

int
rename(char* to, char* frompath)
{
	Dir	d;
	char*	p;

	remove(to);
	p = strrchr(to, '/');
	if(p != nil)
		to = p + 1;
	nulldir(&d);
	d.name = to;
	if(dirwstat(frompath, &d) < 0)
		return -1;
	return 0;
}

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.