File: zfxdir.c

package info (click to toggle)
iraf 2.17-4
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 95,288 kB
  • sloc: ansic: 228,894; fortran: 75,606; lisp: 18,369; xml: 8,401; sh: 6,111; yacc: 5,648; lex: 596; makefile: 575; asm: 153; csh: 95; sed: 4
file content (51 lines) | stat: -rw-r--r-- 1,200 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
/* Copyright(c) 1986 Association of Universities for Research in Astronomy Inc.
 */

#include <stdio.h>
#include <ctype.h>
#define import_spp
#define	import_kernel
#define import_knames
#include <iraf.h>

/* ZFXDIR -- Extract OS directory prefix from OSFN.  The null string is
 * returned if there is no directory prefix.  The status value is the number
 * of characters in the output string.
 */
int
ZFXDIR (
  XCHAR	 *osfn,			/* OS filename		[NOT PACKED]	*/
  XCHAR	 *osdir, 		/* receives osdir	[NOT PACKED]	*/
  XINT	 *maxch, 
  XINT   *nchars
)
{
	register XCHAR	*ip, *op;
	register int	n = *maxch;
	XCHAR	*last_slash;


	for (ip=osfn;  *ip == ' ';  ip++)
	    ;

	/* A UNIX pathname must begin with a / (anything else is considered an
	 * IRAF pathname).  The OSDIR part includes everything up to the
	 * rightmost /.  A string of the form "/name" has the directory prefix
	 * "/", i.e. "name" is considered a filename not a subdirectory name.
	 */
	last_slash = NULL;
	op = osdir;

	if (*ip == '/')
	    for (;  --n >= 0 && (*op = *ip++);  op++)
		if (*op == '/')
		    last_slash = op;

	if (last_slash != NULL)
	    op = last_slash + 1;

	*op = XEOS;
	*nchars = op - osdir;

	return (XOK);
}