summaryrefslogtreecommitdiff
path: root/include/ftpparse.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/ftpparse.h')
-rw-r--r--include/ftpparse.h53
1 files changed, 53 insertions, 0 deletions
diff --git a/include/ftpparse.h b/include/ftpparse.h
new file mode 100644
index 0000000..3da3c1b
--- /dev/null
+++ b/include/ftpparse.h
@@ -0,0 +1,53 @@
+#ifndef FTPPARSE_H
+#define FTPPARSE_H
+
+#include <time.h>
+
+/*
+ftpparse(&fp,buf,len) tries to parse one line of LIST output.
+
+The line is an array of len characters stored in buf.
+It should not include the terminating CR LF; so buf[len] is typically CR.
+
+If ftpparse() can't find a filename, it returns 0.
+
+If ftpparse() can find a filename, it fills in fp and returns 1.
+fp is a struct ftpparse, defined below.
+The name is an array of fp.namelen characters stored in fp.name;
+fp.name points somewhere within buf.
+*/
+
+struct ftpparse {
+ char *name; /* not necessarily 0-terminated */
+ int namelen;
+ int flagtrycwd; /* 0 if cwd is definitely pointless, 1 otherwise */
+ int flagtryretr; /* 0 if retr is definitely pointless, 1 otherwise */
+ int sizetype;
+ long size; /* number of octets */
+ int mtimetype;
+ time_t mtime; /* modification time */
+ int idtype;
+ char *id; /* not necessarily 0-terminated */
+ int idlen;
+} ;
+
+#define FTPPARSE_SIZE_UNKNOWN 0
+#define FTPPARSE_SIZE_BINARY 1 /* size is the number of octets in TYPE I */
+#define FTPPARSE_SIZE_ASCII 2 /* size is the number of octets in TYPE A */
+
+#define FTPPARSE_MTIME_UNKNOWN 0
+#define FTPPARSE_MTIME_LOCAL 1 /* time is correct */
+#define FTPPARSE_MTIME_REMOTEMINUTE 2 /* time zone and secs are unknown */
+#define FTPPARSE_MTIME_REMOTEDAY 3 /* time zone and time of day are unknown */
+/*
+When a time zone is unknown, it is assumed to be GMT. You may want
+to use localtime() for LOCAL times, along with an indication that the
+time is correct in the local time zone, and gmtime() for REMOTE* times.
+*/
+
+#define FTPPARSE_ID_UNKNOWN 0
+#define FTPPARSE_ID_FULL 1 /* unique identifier for files on this FTP server */
+
+extern int ftpparse(struct ftpparse *,char *,int);
+
+#endif