magick
|
Colorlist.h,
Imakefile,
Makefile,
Makefile.in,
PreRvIcccm.c,
PreRvIcccm.h,
X.c,
X.h,
XWDFile.h,
colors.c,
compress.c,
compress.h,
decode.c,
effects.c,
encode.c,
error.c,
error.h,
formats.h,
gems.c,
gems.h,
image.c,
image.h,
logo.h,
mac.c,
mac.h,
magick.h,
make.com,
monitor.c,
monitor.h,
nt.c,
nt.h,
plug-ins.h,
quantize.c,
segment.c,
shear.c,
signature.c,
utility.c,
utility.h,
version.h,
vms.c,
vms.h,
widget.c,
widget.h,
|
|
|
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% %
% V V M M SSSSS %
% V V MM MM SS %
% V V M M M SSS %
% V V M M SS %
% V M M SSSSS %
% %
% VMS Utility Routines for ImageMagick. %
% %
% %
% Software Design %
% John Cristy %
% October 1994 %
% %
% %
% Copyright 1997 E. I. du Pont de Nemours and Company %
% %
% Permission to use, copy, modify, distribute, and sell this software and %
% its documentation for any purpose is hereby granted without fee, %
% provided that the above Copyright notice appear in all copies and that %
% both that Copyright notice and this permission notice appear in %
% supporting documentation, and that the name of E. I. du Pont de Nemours %
% and Company not be used in advertising or publicity pertaining to %
% distribution of the software without specific, written prior %
% permission. E. I. du Pont de Nemours and Company makes no representations %
% about the suitability of this software for any purpose. It is provided %
% "as is" without express or implied warranty. %
% %
% E. I. du Pont de Nemours and Company disclaims all warranties with regard %
% to this software, including all implied warranties of merchantability %
% and fitness, in no event shall E. I. du Pont de Nemours and Company be %
% liable for any special, indirect or consequential damages or any %
% damages whatsoever resulting from loss of use, data or profits, whether %
% in an action of contract, negligence or other tortious action, arising %
% out of or in connection with the use or performance of this software. %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% The directory routines are strongly based on similiar routines written
% by Rich Salz.
%
*/
#if defined(vms)
/*
Include declarations.
*/
#include
#include
#include
#include "vms.h"
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% c l o s e d i r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function closedir closes the named directory stream and frees the DIR
% structure.
%
% The format of the closedir routine is:
%
% closedir(entry)
%
% A description of each parameter follows:
%
% o entry: Specifies a pointer to a DIR structure.
%
%
*/
void closedir(DIR *directory)
{
assert(directory != (DIR *) NULL);
free(directory->pattern);
free((char *) directory);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% i n d e x %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function index returns a pointer to the first occurrence of a character
% within a string.
%
%
*/
char *index(char *string,char c)
{
assert(string != (char *) NULL);
return(strchr(string,c));
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% o p e n e d i r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function opendir opens the directory named by filename and associates
% a directory stream with it.
%
% The format of the opendir routine is:
%
% opendir(entry)
%
% A description of each parameter follows:
%
% o entry: Specifies a pointer to a DIR structure.
%
%
*/
DIR *opendir(char *name)
{
DIR
*directory;
/*
Allocate memory for handle and the pattern.
*/
directory=(DIR *) malloc(sizeof(*directory));
if (directory == (DIR *) NULL)
{
errno=ENOMEM;
return((DIR *) NULL);
}
if (strcmp(".",name) == 0)
name="";
directory->pattern=malloc((unsigned int) (strlen(name)+sizeof("*.*")+1));
if (directory->pattern == (char *) NULL)
{
free((char *) directory);
errno=ENOMEM;
return(NULL);
}
/*
Initialize descriptor.
*/
(void) sprintf(directory->pattern,"%s*.*",name);
directory->context=0;
directory->pat.dsc$a_pointer=directory->pattern;
directory->pat.dsc$w_length=strlen(directory->pattern);
directory->pat.dsc$b_dtype=DSC$K_DTYPE_T;
directory->pat.dsc$b_class=DSC$K_CLASS_S;
return(directory);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% r e a d d i r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function readdir returns a pointer to a structure representing the
% directory entry at the current position in the directory stream to
% which entry refers.
%
% The format of the readdir
%
% readdir(entry)
%
% A description of each parameter follows:
%
% o entry: Specifies a pointer to a DIR structure.
%
%
*/
struct dirent *readdir(DIR *directory)
{
char
buffer[sizeof(directory->entry.d_name)];
int
status;
register char
*p;
register int
i;
struct dsc$descriptor_s
result;
/*
Initialize the result descriptor.
*/
result.dsc$a_pointer=buffer;
result.dsc$w_length=sizeof(buffer)-2;
result.dsc$b_dtype=DSC$K_DTYPE_T;
result.dsc$b_class=DSC$K_CLASS_S;
status=lib$find_file(&directory->pat,&result,&directory->context);
if ((status == RMS$_NMF) || (directory->context == 0L))
return((struct dirent *) NULL);
/*
Lowercase all filenames.
*/
buffer[sizeof(buffer)-1]='\0';
for (p=buffer; *p; p++)
if (isupper(*p))
*p=tolower(*p);
/*
Skip any directory component and just copy the name.
*/
p=buffer;
while (!isspace(*p))
p++;
*p='\0';
p=strchr(buffer,']');
if (p)
(void) strcpy(directory->entry.d_name,p+1);
else
(void) strcpy(directory->entry.d_name,buffer);
/*
Remove the file version number.
*/
p=strchr(directory->entry.d_name,';');
if (p)
*p='\0';
directory->entry.d_namlen=strlen(directory->entry.d_name);
return(&directory->entry);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% s e e k d i r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function seekdir sets the position of the next readdir() operation
% on the directory stream.
%
% The format of the seekdir routine is:
%
% closedir(entry,position)
%
% A description of each parameter follows:
%
% o entry: Specifies a pointer to a DIR structure.
%
% o position: specifies the position associated with the directory
% stream.
%
%
%
*/
void seekdir(DIR *entry,long position)
{
assert(entry != (DIR *) NULL);
}
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
% %
% %
% t e l l d i r %
% %
% %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Function telldir returns the current location associated with the
% named directory stream.
%
% The format of the telldir routine is:
%
% telldir(entry)
%
% A description of each parameter follows:
%
% o entry: Specifies a pointer to a DIR structure.
%
%
*/
long telldir(DIR *entry)
{
assert(entry != (DIR *) NULL);
}
#endif
|