-
-/* FIXME: The following should get moved into gnulib. */
-
-static inline struct timespec
-get_stat_atime (struct stat const *st)
-{
-#if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
- return st->st_atim;
-#elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
- return st->st_atimespec;
-#else
- struct timespec t;
- t.tv_sec = st->st_atime;
-# if defined HAVE_STRUCT_STAT_ST_ATIMENSEC
- t.tv_nsec = st->stat.st_atimensec;
-# elif defined HAVE_STRUCT_STAT_ST_SPARE1
- t.tv_nsec = st->stat.st_spare1 * 1000;
-# else
- t.tv_nsec = 0;
-# endif
- return t;
-#endif
-}
-
-static inline struct timespec
-get_stat_ctime (struct stat const *st)
-{
-#if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
- return st->st_ctim;
-#elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
- return st->st_ctimespec;
-#else
- struct timespec t;
- t.tv_sec = st->st_ctime;
-# if defined HAVE_STRUCT_STAT_ST_ATIMENSEC
- t.tv_nsec = st->stat.st_ctimensec;
-# elif defined HAVE_STRUCT_STAT_ST_SPARE1
- t.tv_nsec = st->stat.st_spare1 * 1000;
-# else
- t.tv_nsec = 0;
-# endif
- return t;
-#endif
-}
-
-static inline struct timespec
-get_stat_mtime (struct stat const *st)
-{
-#if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
- return st->st_mtim;
-#elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
- return st->st_mtimespec;
-#else
- struct timespec t;
- t.tv_sec = st->st_mtime;
-# if defined HAVE_STRUCT_STAT_ST_ATIMENSEC
- t.tv_nsec = st->stat.st_mtimensec;
-# elif defined HAVE_STRUCT_STAT_ST_SPARE1
- t.tv_nsec = st->stat.st_spare1 * 1000;
-# else
- t.tv_nsec = 0;
-# endif
- return t;
-#endif
-}
-
-static inline void
-set_stat_atime (struct stat *st, struct timespec t)
-{
-#if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
- st->st_atim = t;
-#elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
- st->st_atimespec = t;
-#else
- st->st_atime = t.tv_sec;
-# if defined HAVE_STRUCT_STAT_ST_ATIMENSEC
- st->stat.st_atimensec = t.tv_nsec;
-# elif defined HAVE_STRUCT_STAT_ST_SPARE1
- st->stat.st_spare1 = t.tv_nsec / 1000;
-# endif
-#endif
-}
-
-static inline void
-set_stat_ctime (struct stat *st, struct timespec t)
-{
-#if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
- st->st_ctim = t;
-#elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
- st->st_ctimespec = t;
-#else
- st->st_ctime = t.tv_sec;
-# if defined HAVE_STRUCT_STAT_ST_ATIMENSEC
- st->stat.st_ctimensec = t.tv_nsec;
-# elif defined HAVE_STRUCT_STAT_ST_SPARE1
- st->stat.st_spare1 = t.tv_nsec / 1000;
-# endif
-#endif
-}
-
-static inline void
-set_stat_mtime (struct stat *st, struct timespec t)
-{
-#if defined HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
- st->st_mtim = t;
-#elif defined HAVE_STRUCT_STAT_ST_ATIMESPEC_TV_NSEC
- st->st_mtimespec = t;
-#else
- st->st_mtime = t.tv_sec;
-# if defined HAVE_STRUCT_STAT_ST_ATIMENSEC
- st->stat.st_mtimensec = t.tv_nsec;
-# elif defined HAVE_STRUCT_STAT_ST_SPARE1
- st->stat.st_spare1 = t.tv_nsec / 1000;
-# endif
-#endif
-}
+/* Module transform.c */
+typedef enum
+ {
+ xform_regfile,
+ xform_link,
+ xform_symlink
+ } xform_type;
+
+void set_transform_expr (const char *expr);
+bool transform_name (char **pinput);
+bool transform_member_name (char **pinput, xform_type type);
+bool transform_name_fp (char **pinput, char *(*fun)(char *, void *), void *);
+
+/* Module suffix.c */
+void set_comression_program_by_suffix (const char *name, const char *defprog);
+
+/* Module checkpoint.c */
+void checkpoint_compile_action (const char *str);
+void checkpoint_finish_compile (void);
+void checkpoint_run (bool do_write);