Avoid tempdir trickery for c-apps and use consistent header includes.
authordbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 14 Nov 2007 20:05:15 +0000 (20:05 +0000)
committerdbs <dbs@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Wed, 14 Nov 2007 20:05:15 +0000 (20:05 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@8062 dcc99617-32d9-48b4-a31d-7c20da2025e4

18 files changed:
Open-ILS/src/c-apps/Makefile
Open-ILS/src/c-apps/idl_fieldmapper.h [deleted file]
Open-ILS/src/c-apps/oils_auth.c
Open-ILS/src/c-apps/oils_constants.h [deleted file]
Open-ILS/src/c-apps/oils_cstore.c
Open-ILS/src/c-apps/oils_dataloader.c
Open-ILS/src/c-apps/oils_event.c
Open-ILS/src/c-apps/oils_event.h [deleted file]
Open-ILS/src/c-apps/oils_fetch.c
Open-ILS/src/c-apps/oils_idl-core.c
Open-ILS/src/c-apps/oils_idl.h [deleted file]
Open-ILS/src/c-apps/oils_utils.c
Open-ILS/src/c-apps/oils_utils.h [deleted file]
Open-ILS/src/c-apps/openils/idl_fieldmapper.h [new file with mode: 0644]
Open-ILS/src/c-apps/openils/oils_constants.h [new file with mode: 0644]
Open-ILS/src/c-apps/openils/oils_event.h [new file with mode: 0644]
Open-ILS/src/c-apps/openils/oils_idl.h [new file with mode: 0644]
Open-ILS/src/c-apps/openils/oils_utils.h [new file with mode: 0644]

index b854fc8..c39465c 100644 (file)
@@ -6,70 +6,66 @@ CFLAGS += -DOSRF_LOG_PARAMS
 all:   liboils_idl.so oils_auth.so oils_cstore.so oils_rstore.so oils_dataloader
 #all:  oils_auth.so
 
-oils_event.o:  oils_event.c oils_event.h
-oils_utils.o:  oils_utils.c oils_utils.h idl_fieldmapper.h
+oils_event.o:  oils_event.c
+oils_utils.o:  oils_utils.c
 oils_auth.o:   oils_auth.c
-oils_fetch.o:  oils_fetch.c oils_utils.h 
-oils_cstore.o: oils_cstore.c oils_utils.h
+oils_fetch.o:  oils_fetch.c
+oils_cstore.o: oils_cstore.c
 oils_dataloader.o:     oils_dataloader.c
 
 oils_dataloader:       oils_dataloader.o
        @echo $@
-       $(CC) $(LDLIBS) $(LDFLAGS) -loils_idl -loils_utils oils_dataloader.o -o $(TMP)/$@
+       $(CC) $(LDLIBS) $(LDFLAGS) -loils_idl -loils_utils oils_dataloader.o -o $@
 
 oils_cstore.so:        oils_cstore.o liboils_utils.so liboils_idl.so
        @echo $@
-       $(CC) -shared -W1 $(LDLIBS) $(LDFLAGS) -loils_idl -ldbi -loils_utils -ldbdpgsql oils_cstore.o -o $(TMP)/$@
+       $(CC) -shared -W1 $(LDLIBS) $(LDFLAGS) -loils_idl -ldbi -loils_utils -ldbdpgsql oils_cstore.o -o $@
 
-oils_rstore.o: oils_cstore.c oils_utils.h
+oils_rstore.o: oils_cstore.c
        $(CC) $(CFLAGS) -I$(TMP) -DRSTORE -c -o $@ oils_cstore.c 
 
 oils_rstore.so:        oils_rstore.o liboils_utils.so liboils_idl.so
        @echo $@
-       $(CC) -shared -W1 $(LDLIBS) $(LDFLAGS) -loils_idl -ldbi -ldbdpgsql oils_rstore.o -o $(TMP)/$@
+       $(CC) -shared -W1 $(LDLIBS) $(LDFLAGS) -loils_idl -ldbi -ldbdpgsql oils_rstore.o -o $@
 
 oils_fetch.so: oils_fetch.o liboils_utils.so
        @echo $@
-       $(CC) -shared -W1 $(LDLIBS) $(LDFLAGS) -ldbi -ldbdpgsql -loils_utils oils_fetch.o -o $(TMP)/$@
+       $(CC) -shared -W1 $(LDLIBS) $(LDFLAGS) -ldbi -ldbdpgsql -loils_utils oils_fetch.o -o $@
 
-oils_idl-core.o:       oils_idl-core.c oils_idl.h
+oils_idl-core.o:       oils_idl-core.c
 
 liboils_idl.so:        oils_idl-core.o
        @echo $@
        $(CC) -shared -W1 $(LDLIBS) $(LDFLAGS) oils_idl-core.o -o $@
-       cp $@ $(TMP)/
-       mkdir -p $(TMP)/openils/
-       cp oils_idl.h $(TMP)/openils/
-       cp idl_fieldmapper.h $(TMP)/openils/
+#      cp $@ $(TMP)/
+#      mkdir -p $(TMP)/openils/
+#      cp oils_idl.h $(TMP)/openils/
+#      cp idl_fieldmapper.h $(TMP)/openils/
 
 oils_auth.so:  oils_auth.o liboils_utils.so
        @echo $@
-       $(CC) -shared -W1 $(CFLAGS) $(LDLIBS) $(LDFLAGS) -loils_utils -loils_idl oils_auth.o -o $(TMP)/$@
+       $(CC) -shared -W1 $(CFLAGS) $(LDLIBS) $(LDFLAGS) -loils_utils -loils_idl oils_auth.o -o $@
 
-liboils_utils.so:      oils_utils.o oils_event.o oils_constants.h
+liboils_utils.so:      oils_utils.o oils_event.o
        @echo $@
        $(CC) -shared -W1 $(LDLIBS) $(LDFLAGS) oils_utils.o oils_event.o -o $@
-       cp $@ $(TMP)/
-       mkdir -p $(TMP)/openils/
-       cp oils_event.h $(TMP)/openils/
-       cp oils_utils.h $(TMP)/openils/
-       cp oils_constants.h $(TMP)/openils/
+#      cp $@ $(TMP)/
+#      mkdir -p $(TMP)/openils/
+#      cp oils_event.h $(TMP)/openils/
+#      cp oils_utils.h $(TMP)/openils/
+#      cp oils_constants.h $(TMP)/openils/
 
 install:
        @echo $@;
-       cp $(TMP)/oils_auth.so $(LIBDIR)/
+       cp oils_auth.so $(LIBDIR)/
        #cp $(TMP)/oils_fetch.so $(LIBDIR)/
-       cp $(TMP)/oils_cstore.so $(LIBDIR)/
-       cp $(TMP)/oils_rstore.so $(LIBDIR)/
-       cp $(TMP)/liboils_utils.so $(LIBDIR)/
-       cp $(TMP)/liboils_idl.so $(LIBDIR)/
-       cp $(TMP)/oils_dataloader $(BINDIR)/
+       cp oils_cstore.so $(LIBDIR)/
+       cp oils_rstore.so $(LIBDIR)/
+       cp liboils_utils.so $(LIBDIR)/
+       cp liboils_idl.so $(LIBDIR)/
+       cp oils_dataloader $(BINDIR)/
        mkdir -p $(INCDIR)/
-       cp oils_utils.h $(INCDIR)
-       cp oils_idl.h $(INCDIR)
-       cp oils_event.h $(INCDIR)
-       cp oils_constants.h $(INCDIR)
-       cp idl_fieldmapper.h $(INCDIR)
+       cp openils/*.h $(INCDIR)/
 
 clean:
        @echo $@;
diff --git a/Open-ILS/src/c-apps/idl_fieldmapper.h b/Open-ILS/src/c-apps/idl_fieldmapper.h
deleted file mode 100644 (file)
index f7f2df2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/* This set of macros will emulate the old style libfieldmapper api
- * using the new liboils_idl interface.  You MUST initiallize liboils_idl!
- */ 
-
-#ifndef FIELDMAPPER_API
-
-#ifndef OILS_IDL_API
-#include "oils_idl.h"
-#endif
-
-#define FIELDMAPPER_API
-
-#define fm_pton(x,y) oilsIDL_pton(x,y)
-#define fm_ntop(x,y) oilsIDL_ntop(x,y)
-#define isFieldmapper(x) oilsIDL_classIsFieldmapper(x)
-
-#endif
-
index 87b4ed9..7cc9c0a 100644 (file)
@@ -3,9 +3,9 @@
 #include "opensrf/osrf_settings.h"
 #include "objson/object.h"
 #include "opensrf/log.h"
-#include "oils_utils.h"
-#include "oils_constants.h"
-#include "oils_event.h"
+#include "openils/oils_utils.h"
+#include "openils/oils_constants.h"
+#include "openils/oils_event.h"
 
 #define OILS_AUTH_CACHE_PRFX "oils_auth_"
 
diff --git a/Open-ILS/src/c-apps/oils_constants.h b/Open-ILS/src/c-apps/oils_constants.h
deleted file mode 100644 (file)
index 6eb8fbd..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-/* Settings ------------------------------------------------------ */
-#define OILS_ORG_SETTING_OPAC_TIMEOUT "auth.opac_timeout"
-#define OILS_ORG_SETTING_STAFF_TIMEOUT "auth.staff_timeout"
-#define OILS_ORG_SETTING_TEMP_TIMEOUT "auth.temp_timeout"
-
-
-/* Events ------------------------------------------------------ */
-#define OILS_EVENT_SUCCESS "SUCCESS"
-#define OILS_EVENT_AUTH_FAILED "LOGIN_FAILED"
-#define OILS_EVENT_PERM_FAILURE "PERM_FAILURE"
-#define OILS_EVENT_NO_SESSION "NO_SESSION"
-
index aeedcc2..6a5a867 100644 (file)
@@ -4,7 +4,7 @@
 #include "opensrf/utils.h"
 #include "objson/object.h"
 #include "opensrf/log.h"
-#include "oils_idl.h"
+#include "openils/oils_idl.h"
 #include <dbi/dbi.h>
 
 #include <time.h>
index f44a10a..60f844e 100644 (file)
@@ -6,8 +6,8 @@
 
 #include <stdio.h>
 
-#include "oils_idl.h"
-#include "oils_utils.h"
+#include "openils/oils_idl.h"
+#include "openils/oils_utils.h"
 
 #define CSTORE "open-ils.cstore"
 #define APPNAME "oils_dataloader"
index dfb8936..135bd40 100644 (file)
@@ -1,4 +1,4 @@
-#include "oils_event.h"
+#include "openils/oils_event.h"
 #include <libxml/parser.h>
 #include <libxml/tree.h>
 #include "opensrf/osrf_settings.h"
diff --git a/Open-ILS/src/c-apps/oils_event.h b/Open-ILS/src/c-apps/oils_event.h
deleted file mode 100644 (file)
index 64af307..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-#ifndef OILS_EVENT_HEADER
-#define OILS_EVENT_HEADER
-#include "objson/object.h"
-#include "opensrf/utils.h"
-#include "opensrf/log.h"
-#include "opensrf/osrf_hash.h"
-
-
-/* OILS Event structure */
-struct _oilsEventStruct {
-       char* event;                    /* the event name */
-       char* perm;                             /* the permission error name */
-       int permloc;                    /* the permission location id */
-       jsonObject* payload;    /* the payload */
-       jsonObject* json;               /* the event as a jsonObject */
-       char* file;
-       int line;
-};
-typedef struct _oilsEventStruct oilsEvent;
-
-
-/** Creates a new event.  User is responsible for freeing event with oilsEventFree */
-oilsEvent* oilsNewEvent( char* file, int line, char* event );
-
-/** Creates a new event with payload.  
- * User is responsible for freeing event with oilsEventFree */
-oilsEvent* oilsNewEvent2( char* file, int line, char* event, jsonObject* payload );
-
-/** Creates a new event with permission and permission location.  
- * User is responsible for freeing event with oilsEventFree */
-oilsEvent* oilsNewEvent3( char* file, int line, char* event, char* perm, int permloc );
-
-/** Creates a new event with permission, permission location, and payload.  
- * User is responsible for freeing event with oilsEventFree */
-oilsEvent* oilsNewEvent4( char* file, int line, 
-               char* event, char* perm, int permloc, jsonObject* payload );
-
-/** Sets the permission info for the event */
-void oilsEventSetPermission( oilsEvent* event, char* perm, int permloc );
-
-/* Sets the payload for the event 
- * This clones the payload, so the user is responsible
- * for handling the payload object's memory
- * */
-void oilsEventSetPayload( oilsEvent* event, jsonObject* payload );
-
-/** Creates the JSON associated with an event.  The JSON should NOT be
- * freed by the user.  It will be freed by oilsEventFree */
-jsonObject* oilsEventToJSON( oilsEvent* event );
-
-/* Parses the events file */
-void _oilsEventParseEvents();
-
-/* Frees an event object */
-void oilsEventFree( oilsEvent* event );
-
-
-
-#endif
index 559ebb8..4babd25 100644 (file)
@@ -3,9 +3,9 @@
 #include "opensrf/osrf_settings.h"
 #include "objson/object.h"
 #include "opensrf/log.h"
-#include "oils_utils.h"
-#include "oils_constants.h"
-#include "oils_event.h"
+#include "openils/oils_utils.h"
+#include "openils/oils_constants.h"
+#include "openils/oils_event.h"
 #include <dbi/dbi.h>
 #include <openils/fieldmapper_lookup.h>
 
index a247446..1eea838 100644 (file)
@@ -1,4 +1,4 @@
-#include "oils_idl.h"
+#include "openils/oils_idl.h"
 /*
  * vim:noet:ts=4:
  */
diff --git a/Open-ILS/src/c-apps/oils_idl.h b/Open-ILS/src/c-apps/oils_idl.h
deleted file mode 100644 (file)
index 0805fa6..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-#include "opensrf/log.h"
-#include "opensrf/utils.h"
-#include "opensrf/osrf_hash.h"
-
-#ifndef OILS_IDL_API
-#define OILS_IDL_API
-
-osrfHash* oilsIDLInit( char* );
-osrfHash* oilsIDL();
-osrfHash* oilsIDLFindPath( char*, ... );
-
-/* The oilsIDL hash looks like this:
-
-{ aws : {
-        classname       : "aws",
-        fieldmapper     : "actor::workstation",
-        tablename       : "actor.workstation",          optional
-        sequence        : "actor.workstation_id_seq",   optional
-        primarykey      : "id",
-        virtual         : "true",                       optional, "true" | "false"
-        fields          : {
-                isnew : {
-                        name            : "isnew",
-                        array_position  : "0",
-                        virtual         : "true",       "true" | "false"
-                        primitive       : "number"      optional, JSON primitive (number, string, array,
-                                                        object, bool)
-                },
-                ...
-        },
-        links           : {
-                record : {
-                        field           : "owning_lib", field above that links to another class
-                        rel_type        : "has_a",      link type, "has_a" | "has_many" | "might_have"
-                        class           : "aou",        the foreign class that is linked
-                        key             : "id",         the foreign class's key that creates the link to "field"
-                        map             : []            osrfStringArray used by cstore in "has_many" rel_types to
-                                                        point through a linking class
-                },
-                ...
-        },
-        ...
-}
-
-*/
-
-int oilsIDL_classIsFieldmapper(char*);
-char * oilsIDL_pton(char *, int);
-int oilsIDL_ntop(char *, char *);
-
-#endif
index 168fc1b..2f27ac1 100644 (file)
@@ -1,5 +1,5 @@
-#include "oils_utils.h"
-#include "oils_idl.h"
+#include "openils/oils_utils.h"
+#include "openils/oils_idl.h"
 
 osrfHash* oilsInitIDL(char* idl_filename) {
 
diff --git a/Open-ILS/src/c-apps/oils_utils.h b/Open-ILS/src/c-apps/oils_utils.h
deleted file mode 100644 (file)
index 3e134d5..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-#include "objson/object.h"
-#include "opensrf/log.h"
-
-// XXX replacing this with liboils_idl implementation
-// #include "openils/fieldmapper_lookup.h"
-
-#include "openils/idl_fieldmapper.h"
-
-#include "oils_event.h"
-#include "oils_constants.h"
-#include "opensrf/osrf_app_session.h"
-#include "opensrf/osrf_settings.h"
-
-/**
-  Loads the IDL. Returns NULL on failure
-  or a pointer to the IDL data structure on success.
-  @param idl_filename If not provided, we'll fetch the 
-  filename from the settings server
- */
-osrfHash* oilsInitIDL( char* idl_filename );
-
-/**
-  Returns the string value for field 'field' in the given object.
-  This method calls jsonObjectToSimpleString so numbers will be
-  returned as strings.
-  @param object The object to inspect
-  @param field The field whose value is requsted
-  @return The string at the given position, if none exists, 
-  then NULL is returned.  The caller must free the returned string
-  */
-char* oilsFMGetString( jsonObject* object, char* field );
-
-
-/**
-  Returns the jsonObject found at the specified field in the
-  given object.
-  @param object The object to inspect
-  @param field The field whose value is requsted
-  @return The found object or NULL if none exists.  Do NOT free the 
-  returned object.
-  */
-jsonObject* oilsFMGetObject( jsonObject* object, char* field );
-
-/**
-  Sets the given field in the given object to the given string
-  @param object The object to update
-  @param field The field to change
-  @param string The new data
-  @return 0 if the field was updated successfully, -1 on error
-  */
-int oilsFMSetString( jsonObject* object, char* field, char* string );
-
-/**
- * Returns the data stored in the id field of the object if it exists
- * returns -1 if the id field or the id value is not found
- */
-long oilsFMGetObjectId( jsonObject* obj );
-
-
-/**
- * Checks if the user has each permission at the given org unit
- * Passing in a -1 for the orgid means to use the top level org unit
- * The first permission that fails causes the corresponding permission
- * failure event to be returned
- * returns NULL if all permissions succeed
- */
-oilsEvent* oilsUtilsCheckPerms( int userid, int orgid, char* permissions[], int size );
-
-
-/**
- * Performs a single request and returns the resulting data
- * Caller is responsible for freeing the returned response object
- */
-jsonObject* oilsUtilsQuickReq( char* service, char* method, jsonObject* params );
-
-jsonObject* oilsUtilsStorageReq( char* method, jsonObject* params );
-
-jsonObject* oilsUtilsCStoreReq( char* method, jsonObject* params );
-
-/**
- * Searches the storage server for a user with the given username 
- * Caller is responsible for freeing the returned object
- */
-jsonObject* oilsUtilsFetchUserByUsername( char* name );
-
-
-/**
- * Returns the setting value
- * Caller must free the returned string
- */
-char* oilsUtilsFetchOrgSetting( int orgid, char* setting );
-
-
-/**
- * Logs into the auth server with the given username and password
- * @return The authtoken string which must be de-allocated by the caller
- */
-char* oilsUtilsLogin( char* uname, char* passwd, char* type, int orgId );
-
-
-/**
- * Fetches the requested workstation object by id
- */
-jsonObject* oilsUtilsFetchWorkstation( long id );
-
-jsonObject* oilsUtilsFetchUserByBarcode(char* barcode);
-
-jsonObject* oilsUtilsFetchWorkstationByName( char* name );
-
-
-int oilsUtilsIsDBTrue( char* val );
diff --git a/Open-ILS/src/c-apps/openils/idl_fieldmapper.h b/Open-ILS/src/c-apps/openils/idl_fieldmapper.h
new file mode 100644 (file)
index 0000000..f7f2df2
--- /dev/null
@@ -0,0 +1,18 @@
+/* This set of macros will emulate the old style libfieldmapper api
+ * using the new liboils_idl interface.  You MUST initiallize liboils_idl!
+ */ 
+
+#ifndef FIELDMAPPER_API
+
+#ifndef OILS_IDL_API
+#include "oils_idl.h"
+#endif
+
+#define FIELDMAPPER_API
+
+#define fm_pton(x,y) oilsIDL_pton(x,y)
+#define fm_ntop(x,y) oilsIDL_ntop(x,y)
+#define isFieldmapper(x) oilsIDL_classIsFieldmapper(x)
+
+#endif
+
diff --git a/Open-ILS/src/c-apps/openils/oils_constants.h b/Open-ILS/src/c-apps/openils/oils_constants.h
new file mode 100644 (file)
index 0000000..6eb8fbd
--- /dev/null
@@ -0,0 +1,14 @@
+
+
+/* Settings ------------------------------------------------------ */
+#define OILS_ORG_SETTING_OPAC_TIMEOUT "auth.opac_timeout"
+#define OILS_ORG_SETTING_STAFF_TIMEOUT "auth.staff_timeout"
+#define OILS_ORG_SETTING_TEMP_TIMEOUT "auth.temp_timeout"
+
+
+/* Events ------------------------------------------------------ */
+#define OILS_EVENT_SUCCESS "SUCCESS"
+#define OILS_EVENT_AUTH_FAILED "LOGIN_FAILED"
+#define OILS_EVENT_PERM_FAILURE "PERM_FAILURE"
+#define OILS_EVENT_NO_SESSION "NO_SESSION"
+
diff --git a/Open-ILS/src/c-apps/openils/oils_event.h b/Open-ILS/src/c-apps/openils/oils_event.h
new file mode 100644 (file)
index 0000000..64af307
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef OILS_EVENT_HEADER
+#define OILS_EVENT_HEADER
+#include "objson/object.h"
+#include "opensrf/utils.h"
+#include "opensrf/log.h"
+#include "opensrf/osrf_hash.h"
+
+
+/* OILS Event structure */
+struct _oilsEventStruct {
+       char* event;                    /* the event name */
+       char* perm;                             /* the permission error name */
+       int permloc;                    /* the permission location id */
+       jsonObject* payload;    /* the payload */
+       jsonObject* json;               /* the event as a jsonObject */
+       char* file;
+       int line;
+};
+typedef struct _oilsEventStruct oilsEvent;
+
+
+/** Creates a new event.  User is responsible for freeing event with oilsEventFree */
+oilsEvent* oilsNewEvent( char* file, int line, char* event );
+
+/** Creates a new event with payload.  
+ * User is responsible for freeing event with oilsEventFree */
+oilsEvent* oilsNewEvent2( char* file, int line, char* event, jsonObject* payload );
+
+/** Creates a new event with permission and permission location.  
+ * User is responsible for freeing event with oilsEventFree */
+oilsEvent* oilsNewEvent3( char* file, int line, char* event, char* perm, int permloc );
+
+/** Creates a new event with permission, permission location, and payload.  
+ * User is responsible for freeing event with oilsEventFree */
+oilsEvent* oilsNewEvent4( char* file, int line, 
+               char* event, char* perm, int permloc, jsonObject* payload );
+
+/** Sets the permission info for the event */
+void oilsEventSetPermission( oilsEvent* event, char* perm, int permloc );
+
+/* Sets the payload for the event 
+ * This clones the payload, so the user is responsible
+ * for handling the payload object's memory
+ * */
+void oilsEventSetPayload( oilsEvent* event, jsonObject* payload );
+
+/** Creates the JSON associated with an event.  The JSON should NOT be
+ * freed by the user.  It will be freed by oilsEventFree */
+jsonObject* oilsEventToJSON( oilsEvent* event );
+
+/* Parses the events file */
+void _oilsEventParseEvents();
+
+/* Frees an event object */
+void oilsEventFree( oilsEvent* event );
+
+
+
+#endif
diff --git a/Open-ILS/src/c-apps/openils/oils_idl.h b/Open-ILS/src/c-apps/openils/oils_idl.h
new file mode 100644 (file)
index 0000000..0805fa6
--- /dev/null
@@ -0,0 +1,51 @@
+#include "opensrf/log.h"
+#include "opensrf/utils.h"
+#include "opensrf/osrf_hash.h"
+
+#ifndef OILS_IDL_API
+#define OILS_IDL_API
+
+osrfHash* oilsIDLInit( char* );
+osrfHash* oilsIDL();
+osrfHash* oilsIDLFindPath( char*, ... );
+
+/* The oilsIDL hash looks like this:
+
+{ aws : {
+        classname       : "aws",
+        fieldmapper     : "actor::workstation",
+        tablename       : "actor.workstation",          optional
+        sequence        : "actor.workstation_id_seq",   optional
+        primarykey      : "id",
+        virtual         : "true",                       optional, "true" | "false"
+        fields          : {
+                isnew : {
+                        name            : "isnew",
+                        array_position  : "0",
+                        virtual         : "true",       "true" | "false"
+                        primitive       : "number"      optional, JSON primitive (number, string, array,
+                                                        object, bool)
+                },
+                ...
+        },
+        links           : {
+                record : {
+                        field           : "owning_lib", field above that links to another class
+                        rel_type        : "has_a",      link type, "has_a" | "has_many" | "might_have"
+                        class           : "aou",        the foreign class that is linked
+                        key             : "id",         the foreign class's key that creates the link to "field"
+                        map             : []            osrfStringArray used by cstore in "has_many" rel_types to
+                                                        point through a linking class
+                },
+                ...
+        },
+        ...
+}
+
+*/
+
+int oilsIDL_classIsFieldmapper(char*);
+char * oilsIDL_pton(char *, int);
+int oilsIDL_ntop(char *, char *);
+
+#endif
diff --git a/Open-ILS/src/c-apps/openils/oils_utils.h b/Open-ILS/src/c-apps/openils/oils_utils.h
new file mode 100644 (file)
index 0000000..3e134d5
--- /dev/null
@@ -0,0 +1,111 @@
+#include "objson/object.h"
+#include "opensrf/log.h"
+
+// XXX replacing this with liboils_idl implementation
+// #include "openils/fieldmapper_lookup.h"
+
+#include "openils/idl_fieldmapper.h"
+
+#include "oils_event.h"
+#include "oils_constants.h"
+#include "opensrf/osrf_app_session.h"
+#include "opensrf/osrf_settings.h"
+
+/**
+  Loads the IDL. Returns NULL on failure
+  or a pointer to the IDL data structure on success.
+  @param idl_filename If not provided, we'll fetch the 
+  filename from the settings server
+ */
+osrfHash* oilsInitIDL( char* idl_filename );
+
+/**
+  Returns the string value for field 'field' in the given object.
+  This method calls jsonObjectToSimpleString so numbers will be
+  returned as strings.
+  @param object The object to inspect
+  @param field The field whose value is requsted
+  @return The string at the given position, if none exists, 
+  then NULL is returned.  The caller must free the returned string
+  */
+char* oilsFMGetString( jsonObject* object, char* field );
+
+
+/**
+  Returns the jsonObject found at the specified field in the
+  given object.
+  @param object The object to inspect
+  @param field The field whose value is requsted
+  @return The found object or NULL if none exists.  Do NOT free the 
+  returned object.
+  */
+jsonObject* oilsFMGetObject( jsonObject* object, char* field );
+
+/**
+  Sets the given field in the given object to the given string
+  @param object The object to update
+  @param field The field to change
+  @param string The new data
+  @return 0 if the field was updated successfully, -1 on error
+  */
+int oilsFMSetString( jsonObject* object, char* field, char* string );
+
+/**
+ * Returns the data stored in the id field of the object if it exists
+ * returns -1 if the id field or the id value is not found
+ */
+long oilsFMGetObjectId( jsonObject* obj );
+
+
+/**
+ * Checks if the user has each permission at the given org unit
+ * Passing in a -1 for the orgid means to use the top level org unit
+ * The first permission that fails causes the corresponding permission
+ * failure event to be returned
+ * returns NULL if all permissions succeed
+ */
+oilsEvent* oilsUtilsCheckPerms( int userid, int orgid, char* permissions[], int size );
+
+
+/**
+ * Performs a single request and returns the resulting data
+ * Caller is responsible for freeing the returned response object
+ */
+jsonObject* oilsUtilsQuickReq( char* service, char* method, jsonObject* params );
+
+jsonObject* oilsUtilsStorageReq( char* method, jsonObject* params );
+
+jsonObject* oilsUtilsCStoreReq( char* method, jsonObject* params );
+
+/**
+ * Searches the storage server for a user with the given username 
+ * Caller is responsible for freeing the returned object
+ */
+jsonObject* oilsUtilsFetchUserByUsername( char* name );
+
+
+/**
+ * Returns the setting value
+ * Caller must free the returned string
+ */
+char* oilsUtilsFetchOrgSetting( int orgid, char* setting );
+
+
+/**
+ * Logs into the auth server with the given username and password
+ * @return The authtoken string which must be de-allocated by the caller
+ */
+char* oilsUtilsLogin( char* uname, char* passwd, char* type, int orgId );
+
+
+/**
+ * Fetches the requested workstation object by id
+ */
+jsonObject* oilsUtilsFetchWorkstation( long id );
+
+jsonObject* oilsUtilsFetchUserByBarcode(char* barcode);
+
+jsonObject* oilsUtilsFetchWorkstationByName( char* name );
+
+
+int oilsUtilsIsDBTrue( char* val );