--- /dev/null
+--- a/common/utils.h
++++ b/common/utils.h
+@@ -1,6 +1,10 @@
+ #ifndef _COMMON_UTILS_H
+ #define _COMMON_UTILS_H
+
++#ifndef _GNU_SOURCE
++#define _GNU_SOURCE
++#endif
++
+ #include <stdio.h>
+ #include <stdarg.h>
+ #include <syslog.h>
+--- a/scan/sane/bb_ledm.c
++++ b/scan/sane/bb_ledm.c
+@@ -28,6 +28,7 @@
+ # include <stdlib.h>
+
+ # include <stdint.h>
++# include <unistd.h>
+
+ # define _STRINGIZE(x) #x
+ # define STRINGIZE(x) _STRINGIZE(x)
+--- a/scan/sane/hpaio.c
++++ b/scan/sane/hpaio.c
+@@ -50,6 +50,7 @@
+ #include "escl.h"
+ #include "io.h"
+ #include "orblitei.h"
++#include "orblite.h"
+
+
+ #define DEBUG_DECLARE_ONLY
+@@ -252,8 +253,8 @@ extern SANE_Status sane_hpaio_get_device
+ ResetDeviceList(&DeviceList);
+ DevDiscovery(localOnly);
+ *deviceList = (const SANE_Device **)DeviceList;
+- SANE_Device*** devList;
+- orblite_get_devices(devList, localOnly);
++ const SANE_Device** devList;
++ orblite_get_devices(&devList, localOnly);
+
+ return SANE_STATUS_GOOD;
+ }
+--- a/scan/sane/http.c
++++ b/scan/sane/http.c
+@@ -31,6 +31,7 @@
+ #define _GNU_SOURCE
+ #endif
+
++#include <unistd.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+--- a/scan/sane/orblite.c
++++ b/scan/sane/orblite.c
+@@ -19,6 +19,7 @@
+ #undef NDEBUG\r
+ #include "orblitei.h"\r
+ #include "orblite.h"//Added New\r
++#include <dlfcn.h>\r
+ #include <math.h>\r
+ #include "utils.h"\r
+ #include "io.h"\r
+@@ -63,28 +64,28 @@ SANE_Option_Descriptor DefaultOrbOptions
+ SANE_NAME_SCAN_TL_X, SANE_TITLE_SCAN_TL_X, SANE_DESC_SCAN_TL_X, // name, title, desc\r
+ SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size\r
+ SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)\r
+- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeLeft // constraint_type, constraint\r
++ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeLeft // constraint_type, constraint\r
+ },\r
+ \r
+ {\r
+ SANE_NAME_SCAN_TL_Y, SANE_TITLE_SCAN_TL_Y, SANE_DESC_SCAN_TL_Y, // name, title, desc\r
+ SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size\r
+ SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)\r
+- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeTop // constraint_type, constraint\r
++ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeTop // constraint_type, constraint\r
+ },\r
+ \r
+ {\r
+ SANE_NAME_SCAN_BR_X, SANE_TITLE_SCAN_BR_X, SANE_DESC_SCAN_BR_X, // name, title, desc\r
+ SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size\r
+ SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)\r
+- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeRight // constraint_type, constraint\r
++ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeRight // constraint_type, constraint\r
+ },\r
+ \r
+ {\r
+ SANE_NAME_SCAN_BR_Y, SANE_TITLE_SCAN_BR_Y, SANE_DESC_SCAN_BR_Y, // name, title, desc\r
+ SANE_TYPE_FIXED, SANE_UNIT_MM, sizeof(SANE_Fixed),// type, unit, size\r
+ SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)\r
+- SANE_CONSTRAINT_RANGE, (SANE_Char**)&SANE_rangeBottom // constraint_type, constraint\r
++ SANE_CONSTRAINT_RANGE, (const SANE_Char**)&SANE_rangeBottom // constraint_type, constraint\r
+ },\r
+ \r
+ // optResolution, // resolution group \r
+@@ -92,7 +93,7 @@ SANE_Option_Descriptor DefaultOrbOptions
+ SANE_NAME_SCAN_RESOLUTION, SANE_TITLE_SCAN_RESOLUTION, SANE_DESC_SCAN_RESOLUTION, // name, title, desc\r
+ SANE_TYPE_INT, SANE_UNIT_DPI, sizeof(SANE_Word), // type, unit, size,\r
+ SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)\r
+- SANE_CONSTRAINT_WORD_LIST, (SANE_Char**)SANE_resolutions // constraint type, constraint\r
++ SANE_CONSTRAINT_WORD_LIST, (const SANE_Char**)SANE_resolutions // constraint type, constraint\r
+ },\r
+ \r
+ // optMode, // color/depth group\r
+@@ -100,7 +101,7 @@ SANE_Option_Descriptor DefaultOrbOptions
+ SANE_NAME_SCAN_MODE, SANE_TITLE_SCAN_MODE, SANE_DESC_SCAN_MODE, // name, title, desc\r
+ SANE_TYPE_STRING, SANE_UNIT_NONE, 256, // type, unit, size,\r
+ SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)\r
+- SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_modes // constraint type, constraint\r
++ SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_modes // constraint type, constraint\r
+ },\r
+ \r
+ // optSource, \r
+@@ -108,7 +109,7 @@ SANE_Option_Descriptor DefaultOrbOptions
+ SANE_NAME_SCAN_SOURCE, SANE_TITLE_SCAN_SOURCE, SANE_DESC_SCAN_SOURCE, // name, title, desc\r
+ SANE_TYPE_STRING, SANE_UNIT_NONE, 256, // type, unit, size,\r
+ SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)\r
+- SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_sources // constraint type, constraint\r
++ SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_sources // constraint type, constraint\r
+ },\r
+ \r
+ // optPaperSize, \r
+@@ -116,7 +117,7 @@ SANE_Option_Descriptor DefaultOrbOptions
+ SANE_NAME_PAPER_SIZE, SANE_TITLE_PAPER_SIZE, SANE_DESC_PAPER_SIZE, // name, title, desc\r
+ SANE_TYPE_STRING, SANE_UNIT_NONE, 256, // type, unit, size,\r
+ SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)\r
+- SANE_CONSTRAINT_STRING_LIST, (SANE_Char**)SANE_paper_sizes // constraint type, constraint\r
++ SANE_CONSTRAINT_STRING_LIST, (const SANE_Char**)SANE_paper_sizes // constraint type, constraint\r
+ },\r
+ \r
+ // optPaperSize, \r
+@@ -124,7 +125,7 @@ SANE_Option_Descriptor DefaultOrbOptions
+ SANE_NAME_PAPER_SIZE, SANE_TITLE_PAPER_SIZE, SANE_DESC_PAPER_SIZE, // name, title, desc\r
+ SANE_TYPE_INT, SANE_UNIT_DPI, sizeof(SANE_Word), // type, unit, size,\r
+ SANE_CAP_SOFT_SELECT | SANE_CAP_SOFT_DETECT, // cap(ability)\r
+- SANE_CONSTRAINT_WORD_LIST, (SANE_Char**)SANE_resolutions // constraint type, constraint\r
++ SANE_CONSTRAINT_WORD_LIST, (const SANE_Char**)SANE_resolutions // constraint type, constraint\r
+ },\r
+ #ifdef NOTDEF\r
+ // default template\r
+@@ -195,7 +196,7 @@ bugout:
+ \r
+ static int bb_unload(SANE_THandle ps)\r
+ {\r
+- _DBG("Calling orblite bb_unload: \n");\r
++ DBG("Calling orblite bb_unload: \n");\r
+ if (ps->bb_handle)\r
+ {\r
+ dlclose(ps->bb_handle);\r
+@@ -304,7 +305,7 @@ orblite_open (SANE_String_Const devicena
+ if (stat != SANE_STATUS_GOOD)\r
+ return stat;\r
+ \r
+- stat = g_handle->bb_orblite_open(devicename, &g_handle);\r
++ stat = g_handle->bb_orblite_open(devicename, (void **)&g_handle);\r
+ if (stat == SANE_STATUS_GOOD)\r
+ *handle = g_handle;\r
+ \r
+--- a/scan/sane/sclpml.c
++++ b/scan/sane/sclpml.c
+@@ -25,6 +25,11 @@
+
+ \************************************************************************************/
+
++#ifndef _GNU_SOURCE
++#define _GNU_SOURCE
++#endif
++
++#include <sys/time.h>
+ #include <stdio.h>
+ #include <string.h>
+ #include <unistd.h>