ftp.nice.ch/pub/next/graphics/viewer/ToyViewer.2.6a.s.tar.gz#/ToyViewer2.6a/src/strfunc.c

This is strfunc.c in view mode; [Download] [Up]

#include  <stdio.h>
#include  <string.h>
#include  <libc.h>
#include  "strfunc.h"

char *str_dup(const char *src)
{
	char *dst;

	dst = (char *)malloc(strlen(src) + 1);
	strcpy(dst, src);
	return dst;
}


int dircopy(char *dst, const char *src, int slash)
	/* copy directory part of file path */
{
	int i, n;

	for (i = 0, n = -1; src[i]; i++) {
		dst[i] = src[i];
		if (src[i] == '/') n = i;
	}
	if (n >= 0) {
		if (slash) ++n;
		dst[n] = 0;
	}
	return n;
}


int getExtension(char const *fn)
{
	int i, j;

	for (i = 0, j = -1; fn[i]; i++) {
		if (fn[i] == '.') j = i;
		else if (fn[i] == '/') j = -1;
	}
	if (j <= 0 || fn[j - 1] == '/')
		return 0;	/* No Extension */
	return j + 1;
}


void str_lcat(char *p, const char *comm, int max)
{
	int i, limit;

	if (comm == NULL)
		return;
	limit = max - 1;
	for (i = 0; i < limit && *p; i++, p++) ;
	while(*comm && i < limit)
		*p++ = *comm++;
	*p = 0;
}

const char *begin_comm(const char *comm, BOOL cont)
	/* Get begining of comment (... : comment) */
{
	if (comm == NULL)
		return NULL;
	while (*comm && *comm != ':')
		comm++;
	if (*comm == ':' && cont)
		while (*++comm == ' ') ;
	if (*comm == 0)
		return NULL;
	return comm;
}

void comment_copy(char *p, const char *comm)
{
	const char *q;

	if ((q = begin_comm(comm, NO)) == NULL)
		return;
	str_lcat(p, q, MAX_COMMENT);
}

const char *key_comm(const commonInfo *cinf)
{
	const char *pp = begin_comm(cinf->memo, NO);
	if (pp == NULL)
		return ": by ToyViewer";
	return pp;
}

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.