aboutsummaryrefslogtreecommitdiff
path: root/pkg/images/tv/tvmark/mkoutname.x
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/images/tv/tvmark/mkoutname.x')
-rw-r--r--pkg/images/tv/tvmark/mkoutname.x273
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