summaryrefslogtreecommitdiffstats
path: root/debian/transcode/transcode-1.1.7/libtc/iodir.h
diff options
context:
space:
mode:
Diffstat (limited to 'debian/transcode/transcode-1.1.7/libtc/iodir.h')
-rw-r--r--debian/transcode/transcode-1.1.7/libtc/iodir.h154
1 files changed, 154 insertions, 0 deletions
diff --git a/debian/transcode/transcode-1.1.7/libtc/iodir.h b/debian/transcode/transcode-1.1.7/libtc/iodir.h
new file mode 100644
index 00000000..8ae5e8c2
--- /dev/null
+++ b/debian/transcode/transcode-1.1.7/libtc/iodir.h
@@ -0,0 +1,154 @@
+/*
+ * iodir.h
+ *
+ * Copyright (C) Thomas Oestreich - June 2001
+ * Updates:
+ * Copyright (C) Francesco Romani - November 2005
+ *
+ * This file is part of transcode, a video stream processing tool
+ *
+ * transcode is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * transcode is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GNU Make; see the file COPYING. If not, write to
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ */
+
+#include "config.h"
+
+#ifndef IODIR_H
+#define IODIR_H
+
+#include <dirent.h>
+
+typedef struct tcdirlist_ TCDirList;
+struct tcdirlist_ {
+ DIR *dir; /* for internal use */
+
+ const char *dir_name; /* saved base path */
+ const char *path_sep; /* optional *nix path separator */
+
+ char filename[PATH_MAX + 2];
+ /*
+ * full path of file actually under focus + optional separator +
+ * final string terminator
+ */
+ char **entries;
+ /* array of full PATHs of files in scanned dirlist */
+
+ int nfiles; /* (current) number of files in dirlist */
+ int findex; /* index of file under focus */
+ int buffered;
+ /* boolean flag: above array of file in directory is valid? */
+};
+
+/*
+ * tc_dirlist_open:
+ * initialize a TCDirList descriptor.
+ * every TCDirList descriptor refers to a specific directory in
+ * filesystem, and more descriptors can refer to the same directory.
+ * BIG FAT WARNING:
+ * all iodir code relies on assumption that target directory
+ * *WILL NOT CHANGE* when referring descriptor is active.
+ *
+ * Parameters:
+ * tcdir: TCDirList structure (descriptor) to initialize.
+ * dirname: full path of target directory.
+ * sort: boolean flag. If is !0, use buffered mode.
+ * further calls to tc_dirlist_scan will return
+ * directory entries in lexicographical order.
+ * otherwise use unbuffered mode.
+ * Return Value:
+ * -1 if some parameter is wrong or if target
+ * directory can't be opened.
+ * 0 succesfull.
+ * Side effects:
+ * none
+ * Preconditions:
+ * referred directory *MUST NOT CHANGE* until descriptor
+ * will be closed via tc_dirlist_close().
+ * Postconditions:
+ * none
+ */
+int tc_dirlist_open(TCDirList *tcdir, const char *dirname, int sort);
+
+/*
+ * tc_dirlist_scan:
+ * give full path of next entry in target directory. This function
+ * can operate in two modes, returning the same values to caller
+ * (if preconditions holds) but in different order.
+ * The first, standard mode is the so called 'unbuffered' mode.
+ * In this mode, this function simply scan the target directory, build
+ * the full path for each entry and return to the caller in filesystem
+ * order. The other operating mode is the 'buffered' mode, and
+ * it's triggered using a non-zero value for parameter 'sort' in
+ * tc_dirlist_open (see above). When in buffered mode, this function
+ * will return the full path of each entry in target directory in
+ * lexicogrpaphical order. Otherwise full path is given using
+ * filesystem order.
+ *
+ * Parameters:
+ * tcdir: TCDirList structure (descriptor) to use.
+ * Return Value:
+ * a constant pointer to full path of next entry NULL there are no
+ * more entries, or if an internal error occurs.
+ * Side effects:
+ * in unbuffered mode, target directory will be scanned one time.
+ * Preconditions:
+ * referred directory *MUST NOT CHANGE* until descriptor
+ * will be closed via tc_dirlist_close().
+ * 'tcdir' was initialized calling tc_dirlist_open().
+ * Postconditions:
+ * none
+ */
+const char *tc_dirlist_scan(TCDirList *tcdir);
+
+/*
+ * tc_dirlist_close:
+ * finalize a TCDirList structure (descriptor), freeing all
+ * acquired resources.
+ *
+ * Parameters:
+ * tcdir: TCDirList structure (descriptor) to close.
+ * Return Value:
+ * none
+ * Side effects:
+ * none
+ * Preconditions:
+ * referred directory *MUST NOT BE CHANGED* until now.
+ * 'tcdir' was initialized calling tc_dirlist_open()
+ * Postconditions:
+ * none
+ */
+void tc_dirlist_close(TCDirList *tcdir);
+
+/*
+ * tc_dirlist_file_count:
+ * return the actual count of files in target directory.
+ *
+ * Parameters:
+ * tcdir: TCDirList structure (descriptor) to use.
+ * Return Value:
+ * actual count of files in target directory
+ * -1 if 'tcdir' is an invalid descriptor
+ * Side effects:
+ * none
+ * Preconditions:
+ * referred directory *MUST NOT CHANGE* until descriptor will be closed
+ * via tc_dirlist_close().
+ * 'tcdir' was initialized calling tc_dirlist_open().
+ * Postconditions:
+ * none
+ */
+int tc_dirlist_file_count(TCDirList *tcdir);
+
+#endif /* IODIR_H */