aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel
diff options
context:
space:
mode:
Diffstat (limited to 'libcrystfel')
-rw-r--r--libcrystfel/src/utils.c23
-rw-r--r--libcrystfel/src/utils.h1
2 files changed, 24 insertions, 0 deletions
diff --git a/libcrystfel/src/utils.c b/libcrystfel/src/utils.c
index 1da0dfca..1e225778 100644
--- a/libcrystfel/src/utils.c
+++ b/libcrystfel/src/utils.c
@@ -612,6 +612,29 @@ void strip_extension(char *bfn)
}
+const char *filename_extension(const char *fn, const char **pext2)
+{
+ const char *ext = NULL;
+ const char *ext2 = NULL;
+ size_t r = strlen(fn)-1;
+
+ while ( r > 0 ) {
+ if ( fn[r] == '.' ) {
+ if ( ext != NULL ) {
+ ext2 = fn+r;
+ break;
+ } else {
+ ext = fn+r;
+ }
+ }
+ r--;
+ }
+
+ if ( pext2 != NULL ) *pext2 = ext2;
+ return ext;
+}
+
+
/* Force the linker to bring in CBLAS to make GSL happy */
void utils_fudge_gslcblas()
{
diff --git a/libcrystfel/src/utils.h b/libcrystfel/src/utils.h
index 39ee8848..9607708f 100644
--- a/libcrystfel/src/utils.h
+++ b/libcrystfel/src/utils.h
@@ -219,6 +219,7 @@ extern char *safe_basename(const char *in);
extern char *safe_strdup(const char *in);
extern void strip_extension(char *bfn);
extern char *load_entire_file(const char *filename);
+extern const char *filename_extension(const char *fn, const char **ext2);
/* ------------------------------ Useful stuff ------------------------------ */