diff options
Diffstat (limited to 'pkg/images/tv/tvmark/mkoutname.x')
-rw-r--r-- | pkg/images/tv/tvmark/mkoutname.x | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/pkg/images/tv/tvmark/mkoutname.x b/pkg/images/tv/tvmark/mkoutname.x new file mode 100644 index 00000000..a4ec4f22 --- /dev/null +++ b/pkg/images/tv/tvmark/mkoutname.x @@ -0,0 +1,273 @@ +# MK_OUTNAME -- Procedure to construct an daophot output file name. +# If output is null or a directory a name is constructed from the root +# of the image name and the extension. The disk is searched to avoid +# name collisions. +# +#procedure mk_outname (image, output, ext, name, maxch) +# +#char image[ARB] # image name +#char output[ARB] # output directory or name +#char ext[ARB] # extension +#char name[ARB] # output name +#int maxch # maximum size of name +# +#int ndir +#pointer sp, root +#int fnldir(), strlen(), mk_imroot() +# +#begin +# call smark (sp) +# call salloc (root, SZ_FNAME, TY_CHAR) +# call imgimage (image, Memc[root], maxch) +# +# ndir = fnldir (output, name, maxch) +# if (strlen (output) == ndir) { +# ndir = ndir + mk_imroot (Memc[root], name[ndir+1], maxch) +# call sprintf (name[ndir+1], maxch, ".%s.*") +# call pargstr (ext) +# call mk_version (name, name, maxch) +# } else +# call strcpy (output, name, maxch) +# +# call sfree (sp) +#end + + +# MK_IMROOT -- Procedure to fetch the root image name minus the directory +# specification and the section notation. The length of the root name is +# returned. +# +#int procedure mk_imroot (image, root, maxch) +# +#char image[ARB] # image specification +#char root[ARB] # rootname +#int maxch # maximum number of characters +# +#int nchars +#pointer sp, str +#int fnldir(), strlen() +# +#begin +# call smark (sp) +# call salloc (str, SZ_FNAME, TY_CHAR) +# +# call imgimage (image, root, maxch) +# nchars = fnldir (root, Memc[str], maxch) +# call strcpy (root[nchars+1], root, maxch) +# +# call sfree (sp) +# return (strlen (root)) +#end + + +# MK_VERSION -- Routine to compute the next available version number of a given +# file name template and output the new files name. +# +#procedure mk_version (template, filename, maxch) +# +#char template[ARB] # name template +#char filename[ARB] # output name +#int maxch # maximum number of characters +# +#char period +#int newversion, version, len, ip +#pointer sp, list, name +#int fntgfnb() strldx(), ctoi() +#pointer fntopnb() +# +#begin +# # Allocate temporary space +# call smark (sp) +# call salloc (name, maxch, TY_CHAR) +# period = '.' +# list = fntopnb (template, NO) +# len = strldx (period, template) +# +# # Loop over the names in the list searchng for the highest version. +# newversion = 0 +# while (fntgfnb (list, Memc[name], maxch) != EOF) { +# len = strldx (period, Memc[name]) +# ip = len + 1 +# if (ctoi (Memc[name], ip, version) <= 0) +# next +# newversion = max (newversion, version) +# } +# +# # Make new output file name. +# call strcpy (template, filename, len) +# call sprintf (filename[len+1], maxch, "%d") +# call pargi (newversion + 1) +# +# call fntclsb (list) +# call sfree (sp) +#end + + +# MK_IMNAME -- Procedure to construct an output image name. +# If output is null or a directory a name is constructed from the root +# of the image name and the extension. The disk is searched to avoid +# name collisions. + +procedure mk_imname (image, output, ext, name, maxch) + +char image[ARB] # image name +char output[ARB] # output directory or name +char ext[ARB] # extension +char name[ARB] # output name +int maxch # maximum size of name + +int ndir, nimdir, clindex, clsize +pointer sp, root, str +int fnldir(), strlen() + +begin + call smark (sp) + call salloc (root, SZ_FNAME, TY_CHAR) + call salloc (str, SZ_FNAME, TY_CHAR) + + ndir = fnldir (output, name, maxch) + if (strlen (output) == ndir) { + call imparse (image, Memc[root], SZ_FNAME, Memc[str], SZ_FNAME, + Memc[str], SZ_FNAME, clindex, clsize) + nimdir = fnldir (Memc[root], Memc[str], SZ_FNAME) + if (clindex >= 0) { + call sprintf (name[ndir+1], maxch, "%s%d.%s.*") + call pargstr (Memc[root+nimdir]) + call pargi (clindex) + call pargstr (ext) + } else { + call sprintf (name[ndir+1], maxch, "%s.%s.*") + call pargstr (Memc[root+nimdir]) + call pargstr (ext) + } + call mk_oimversion (name, name, maxch) + } else + call strcpy (output, name, maxch) + + call sfree (sp) +end + + +# MK_OIMVERSION -- Routine to compute the next available version number of +# a given file name template and output the new files name. + +procedure mk_oimversion (template, filename, maxch) + +char template[ARB] # name template +char filename[ARB] # output name +int maxch # maximum number of characters + +char period +int newversion, version, len +pointer sp, list, name +int imtopen(), imtgetim(), strldx(), ctoi() + +begin + # Allocate temporary space + call smark (sp) + call salloc (name, maxch, TY_CHAR) + period = '.' + list = imtopen (template) + + # Loop over the names in the list searchng for the highest version. + newversion = 0 + while (imtgetim (list, Memc[name], maxch) != EOF) { + len = strldx (period, Memc[name]) + Memc[name+len-1] = EOS + len = strldx (period, Memc[name]) + len = len + 1 + if (ctoi (Memc[name], len, version) <= 0) + next + newversion = max (newversion, version) + } + + # Make new output file name. + len = strldx (period, template) + call strcpy (template, filename, len) + call sprintf (filename[len+1], maxch, "%d") + call pargi (newversion + 1) + + call imtclose (list) + call sfree (sp) +end + + + +# MK_IMNAME -- Procedure to construct an daophot output image name. +# If output is null or a directory a name is constructed from the root +# of the image name and the extension. The disk is searched to avoid +# name collisions. +# +#procedure mk_imname (image, output, ext, name, maxch) +# +#char image[ARB] # image name +#char output[ARB] # output directory or name +#char ext[ARB] # extension +#char name[ARB] # output name +#int maxch # maximum size of name +# +#int ndir +#pointer sp, root +#int fnldir(), strlen(), mk_imroot() +# +#begin +# call smark (sp) +# call salloc (root, SZ_FNAME, TY_CHAR) +# call imgimage (image, Memc[root], maxch) +# +# ndir = fnldir (output, name, maxch) +# if (strlen (output) == ndir) { +# ndir = ndir + mk_imroot (Memc[root], name[ndir+1], maxch) +# call sprintf (name[ndir+1], maxch, ".%s.*") +# call pargstr (ext) +# call mk_imversion (name, name, maxch) +# } else +# call strcpy (output, name, maxch) +# +# call sfree (sp) +#end + + +# MK_VERSION -- Routine to compute the next available version number of a given +# file name template and output the new files name. +# +#procedure mk_imversion (template, filename, maxch) +# +#char template[ARB] # name template +#char filename[ARB] # output name +#int maxch # maximum number of characters +# +#char period +#int newversion, version, len, ip +#pointer sp, list, name +#int fntgfnb() strldx(), ctoi() +#pointer fntopnb() +# +#begin +# # Allocate temporary space +# call smark (sp) +# call salloc (name, maxch, TY_CHAR) +# period = '.' +# list = fntopnb (template, NO) +# len = strldx (period, template) +# +# # Loop over the names in the list searchng for the highest version. +# newversion = 0 +# while (fntgfnb (list, Memc[name], maxch) != EOF) { +# len = strldx (period, Memc[name]) +# Memc[name+len-1] = EOS +# len = strldx (period, Memc[name]) +# ip = len + 1 +# if (ctoi (Memc[name], ip, version) <= 0) +# next +# newversion = max (newversion, version) +# } +# +# # Make new output file name. +# call strcpy (template, filename, len) +# call sprintf (filename[len+1], maxch, "%d") +# call pargi (newversion + 1) +# +# call fntclsb (list) +# call sfree (sp) +#end |