From 586ca4b0e19c73eb182489ef9c75ad82b1c06714 Mon Sep 17 00:00:00 2001
From: Erik von Reis <evonreis@caltech.edu>
Date: Fri, 18 Mar 2022 20:12:40 -0700
Subject: [PATCH] Changed from using an environment variable to using a
 function interface for setting sdf_file_loaded

---
 src/epics/seq/main.c            |  3 ++-
 src/epics/seq/sdf_file_loaded.c | 12 ++++++++++++
 src/epics/seq/sdf_file_loaded.h | 11 +++++++++++
 src/epics/util/fmseq.pl         |  2 +-
 src/epics/util/skeleton.st      |  1 +
 5 files changed, 27 insertions(+), 2 deletions(-)
 create mode 100644 src/epics/seq/sdf_file_loaded.c
 create mode 100644 src/epics/seq/sdf_file_loaded.h

diff --git a/src/epics/seq/main.c b/src/epics/seq/main.c
index 053ee24cf..18a39c5af 100644
--- a/src/epics/seq/main.c
+++ b/src/epics/seq/main.c
@@ -44,6 +44,7 @@ of this distribution.
 #include "envDefs.h"
 #include "math.h"
 #include "rcgversion.h"
+#include "sdf_file_loaded.h"
 
 #define epicsExportSharedSymbols
 #include "asLib.h"
@@ -1883,7 +1884,7 @@ int writeEpicsDb(int numchans,		///< Number of channels to write
                         // trigger a BURT_RESTORE
 
                         {
-                            epicsEnvSet("SDF_FILE_LOADED", "1");
+                            set_sdf_file_loaded(1);
                         }
 			break;
 		case SDF_READ_ONLY:
diff --git a/src/epics/seq/sdf_file_loaded.c b/src/epics/seq/sdf_file_loaded.c
new file mode 100644
index 000000000..e8fec78f8
--- /dev/null
+++ b/src/epics/seq/sdf_file_loaded.c
@@ -0,0 +1,12 @@
+
+static int sdf_file_loaded=0;
+
+int get_sdf_file_loaded()
+{
+    return sdf_file_loaded;
+}
+
+extern void set_sdf_file_loaded(int sfl)
+{
+    sdf_file_loaded = sfl;
+}
\ No newline at end of file
diff --git a/src/epics/seq/sdf_file_loaded.h b/src/epics/seq/sdf_file_loaded.h
new file mode 100644
index 000000000..722e4d64a
--- /dev/null
+++ b/src/epics/seq/sdf_file_loaded.h
@@ -0,0 +1,11 @@
+#ifndef DAQD_TRUNK_SDF_FILE_LOADED_H
+#define DAQD_TRUNK_SDF_FILE_LOADED_H
+
+// set or clear and sdf file loaded flag
+// this flag is used to trigger BURT_RESTORE
+// when the safe.snap or other sdf file is completely loaded
+
+extern int get_sdf_file_loaded();
+extern void set_sdf_file_loaded(int);
+
+#endif // DAQD_TRUNK_SDF_FILE_LOADED_H
diff --git a/src/epics/util/fmseq.pl b/src/epics/util/fmseq.pl
index 51475c55b..eea92757e 100755
--- a/src/epics/util/fmseq.pl
+++ b/src/epics/util/fmseq.pl
@@ -288,7 +288,7 @@ while (<IN>) {
 	# allow burt restore to be triggered by a change in epics
 	# environment variable SDF_FILE_LOAD
 	if ($v_name =~ /BURT_RESTORE/) {
- 	    $vupdate .= "%% sdf_file_loaded = atoi(getenv(\"SDF_FILE_LOADED\"));\n";
+ 	    $vupdate .= "%% sdf_file_loaded = get_sdf_file_loaded();\n";
  	    $vupdate .= "%% if(sdf_file_loaded != sdf_file_loaded_old) {\n";
  	    $vupdate .= "%%    printf(\"BURT_RESTORE triggered to %d\\n\", sdf_file_loaded);\n";
  	    $vupdate .= "%%    sdf_file_loaded_old = sdf_file_loaded;\n";
diff --git a/src/epics/util/skeleton.st b/src/epics/util/skeleton.st
index b2f51addd..7b9b9a6d8 100644
--- a/src/epics/util/skeleton.st
+++ b/src/epics/util/skeleton.st
@@ -36,6 +36,7 @@ program %SEQUENCER_NAME%
 %% #include "fmReadCoeff.h"
 %% #include "feComms.h"
 %% #include "findSharedMemory.h"
+%% #include "sdf_file_loaded.h"
 %% #define FE_ERROR_CFC 0x400
 
 /* Cat string and make upper case */                                     /* MA */
-- 
GitLab