summaryrefslogtreecommitdiff
path: root/reference/C/EXAMPLES/stat.c
diff options
context:
space:
mode:
Diffstat (limited to 'reference/C/EXAMPLES/stat.c')
-rw-r--r--reference/C/EXAMPLES/stat.c87
1 files changed, 87 insertions, 0 deletions
diff --git a/reference/C/EXAMPLES/stat.c b/reference/C/EXAMPLES/stat.c
new file mode 100644
index 0000000..6afeb8c
--- /dev/null
+++ b/reference/C/EXAMPLES/stat.c
@@ -0,0 +1,87 @@
+/************************************************************************
+ *
+ * Purpose: Program to demonstrate the 'stat' function.
+ * The program will show the modification and access times
+ * plus the size of a file.
+ *
+ * Author: M J Leslie
+ *
+ * Date: 01-Jun-95 MJL Minor bug fixed.
+ * 13-Apr-95 MJL Inital Release
+ *
+ * Notes: This function is only available to Unix systems. If you
+ * are on a DOS machine, this will not compile.
+ *
+ * Compile: Change the #define (below) to a suitable file name on your
+ * system. The file name is not passed on the command line
+ * as I did not want to complicate the example.
+ *
+ ************************************************************************/
+
+
+#include <sys/stat.h> /* declare the 'stat' structure */
+#include <sys/types.h>
+#include <unistd.h>
+#include <stdio.h> /* printf */
+#include <time.h>
+
+#define FILENAME "martin" /* PUT YOUR FILE NAME HERE */
+
+/************************************************************************/
+
+char * format_time(time_t cal_time);
+
+void file_stat(char * filename);
+
+/************************************************************************/
+
+main()
+{
+ file_stat(FILENAME);
+}
+
+/************************************************************************/
+
+void file_stat(char * filename)
+{
+ struct stat stat_p; /* 'stat_p' is a pointer to a structure
+ * of type 'stat'. */
+
+ /* Get stats for file and place them in
+ * the structure. */
+ if ( -1 == stat (filename, &stat_p))
+ {
+ printf(" Error occoured attempting to stat %s\n", filename);
+ exit(0);
+ }
+ /* Print a few structure members. */
+
+ printf("Stats for %s \n", filename);
+
+ printf("Modify time is %s", format_time(stat_p.st_mtime));
+
+ /* Access time does not get updated
+ if the filesystem is NFS mounted! */
+
+ printf("Access time is %s", format_time(stat_p.st_atime));
+
+ printf("File size is %d bytes\n", stat_p.st_size);
+}
+
+/************************************************************************/
+
+char * format_time(time_t cal_time)
+{
+ struct tm *time_struct;
+ static char string[30];
+ /* Put the calendar time into a structure
+ * if type 'tm'. */
+ time_struct=localtime(&cal_time);
+
+ /* Build a formatted date from the
+ * structure. */
+ strftime(string, sizeof string, "%h %e %H:%M\n", time_struct);
+
+ /* Return the date/time */
+ return(string);
+}