Check for non standard eaccess(), use open() otherwise.
This commit is contained in:
parent
5d9e481dff
commit
de338a2603
14
.cproject
14
.cproject
@ -45,6 +45,10 @@
|
|||||||
<listOptionValue builtIn="false" value="/home/metalpain/Projectos/workspace/nglibisofs"/>
|
<listOptionValue builtIn="false" value="/home/metalpain/Projectos/workspace/nglibisofs"/>
|
||||||
<listOptionValue builtIn="false" value="/home/metalpain/Projectos/workspace/nglibisofs/src"/>
|
<listOptionValue builtIn="false" value="/home/metalpain/Projectos/workspace/nglibisofs/src"/>
|
||||||
</option>
|
</option>
|
||||||
|
<option id="org.eclipse.cdt.build.core.settings.holder.symbols.734273601" name="Symbols" superClass="org.eclipse.cdt.build.core.settings.holder.symbols" valueType="definedSymbols">
|
||||||
|
<listOptionValue builtIn="false" value="HAVE_EACCESS=1"/>
|
||||||
|
<listOptionValue builtIn="false" value="HAVE_TIMEGM=1"/>
|
||||||
|
</option>
|
||||||
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.598770298" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
|
<inputType id="org.eclipse.cdt.build.core.settings.holder.inType.598770298" languageId="org.eclipse.cdt.core.gcc" languageName="GNU C" sourceContentType="org.eclipse.cdt.core.cSource,org.eclipse.cdt.core.cHeader" superClass="org.eclipse.cdt.build.core.settings.holder.inType"/>
|
||||||
</tool>
|
</tool>
|
||||||
</toolChain>
|
</toolChain>
|
||||||
@ -79,6 +83,7 @@
|
|||||||
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
||||||
|
|
||||||
|
|
||||||
<storageModule moduleId="scannerConfiguration">
|
<storageModule moduleId="scannerConfiguration">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
||||||
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
@ -244,7 +249,7 @@
|
|||||||
</scannerInfoProvider>
|
</scannerInfoProvider>
|
||||||
</profile>
|
</profile>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="converted.config.2029700129">
|
<scannerConfigBuildInfo instanceId="converted.config.2029700129.1058518760">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
||||||
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
<buildOutputProvider>
|
<buildOutputProvider>
|
||||||
@ -327,7 +332,7 @@
|
|||||||
</scannerInfoProvider>
|
</scannerInfoProvider>
|
||||||
</profile>
|
</profile>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="converted.config.2029700129.1058518760">
|
<scannerConfigBuildInfo instanceId="converted.config.2029700129">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
||||||
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
<buildOutputProvider>
|
<buildOutputProvider>
|
||||||
@ -476,6 +481,7 @@
|
|||||||
|
|
||||||
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
<storageModule moduleId="org.eclipse.cdt.core.language.mapping"/>
|
||||||
|
|
||||||
|
|
||||||
<storageModule moduleId="scannerConfiguration">
|
<storageModule moduleId="scannerConfiguration">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
||||||
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
<profile id="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile">
|
||||||
@ -641,7 +647,7 @@
|
|||||||
</scannerInfoProvider>
|
</scannerInfoProvider>
|
||||||
</profile>
|
</profile>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="converted.config.2029700129">
|
<scannerConfigBuildInfo instanceId="converted.config.2029700129.1058518760">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
||||||
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
<buildOutputProvider>
|
<buildOutputProvider>
|
||||||
@ -724,7 +730,7 @@
|
|||||||
</scannerInfoProvider>
|
</scannerInfoProvider>
|
||||||
</profile>
|
</profile>
|
||||||
</scannerConfigBuildInfo>
|
</scannerConfigBuildInfo>
|
||||||
<scannerConfigBuildInfo instanceId="converted.config.2029700129.1058518760">
|
<scannerConfigBuildInfo instanceId="converted.config.2029700129">
|
||||||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId="org.eclipse.cdt.make.core.GCCStandardMakePerProjectProfile"/>
|
||||||
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
<profile id="org.eclipse.cdt.managedbuilder.core.GCCManagedMakePerProjectProfile">
|
||||||
<buildOutputProvider>
|
<buildOutputProvider>
|
||||||
|
20
.project
20
.project
@ -16,14 +16,14 @@
|
|||||||
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
<key>org.eclipse.cdt.make.core.enableCleanBuild</key>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary>
|
|
||||||
<key>?name?</key>
|
|
||||||
<value></value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
<dictionary>
|
||||||
<key>org.eclipse.cdt.make.core.append_environment</key>
|
<key>org.eclipse.cdt.make.core.append_environment</key>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>?name?</key>
|
||||||
|
<value></value>
|
||||||
|
</dictionary>
|
||||||
<dictionary>
|
<dictionary>
|
||||||
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
<key>org.eclipse.cdt.make.core.stopOnError</key>
|
||||||
<value>false</value>
|
<value>false</value>
|
||||||
@ -40,25 +40,25 @@
|
|||||||
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
<key>org.eclipse.cdt.make.core.buildLocation</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary>
|
|
||||||
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
|
||||||
<value>false</value>
|
|
||||||
</dictionary>
|
|
||||||
<dictionary>
|
<dictionary>
|
||||||
<key>org.eclipse.cdt.make.core.environment</key>
|
<key>org.eclipse.cdt.make.core.environment</key>
|
||||||
<value></value>
|
<value></value>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary>
|
<dictionary>
|
||||||
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
<key>org.eclipse.cdt.make.core.useDefaultBuildCmd</key>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary>
|
<dictionary>
|
||||||
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
<key>org.eclipse.cdt.make.core.enableAutoBuild</key>
|
||||||
<value>true</value>
|
<value>true</value>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
|
<dictionary>
|
||||||
|
<key>org.eclipse.cdt.make.core.enableFullBuild</key>
|
||||||
|
<value>true</value>
|
||||||
|
</dictionary>
|
||||||
<dictionary>
|
<dictionary>
|
||||||
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
<key>org.eclipse.cdt.make.core.buildArguments</key>
|
||||||
<value>check -k</value>
|
<value>-k</value>
|
||||||
</dictionary>
|
</dictionary>
|
||||||
<dictionary>
|
<dictionary>
|
||||||
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
<key>org.eclipse.cdt.make.core.fullBuildTarget</key>
|
||||||
|
11
configure.ac
11
configure.ac
@ -92,17 +92,28 @@ AC_PROG_INSTALL
|
|||||||
|
|
||||||
AC_CHECK_HEADERS()
|
AC_CHECK_HEADERS()
|
||||||
|
|
||||||
|
dnl Use GNU extensions if available
|
||||||
|
AC_DEFINE(_GNU_SOURCE, 1)
|
||||||
|
|
||||||
|
dnl Check for tm_gmtoff field in struct tm
|
||||||
AC_CHECK_MEMBER([struct tm.tm_gmtoff],
|
AC_CHECK_MEMBER([struct tm.tm_gmtoff],
|
||||||
[AC_DEFINE(HAVE_TM_GMTOFF, 1,
|
[AC_DEFINE(HAVE_TM_GMTOFF, 1,
|
||||||
[Define this if tm structure includes a tm_gmtoff entry.])],
|
[Define this if tm structure includes a tm_gmtoff entry.])],
|
||||||
,
|
,
|
||||||
[#include <time.h>])
|
[#include <time.h>])
|
||||||
|
|
||||||
|
dnl Check if non standard timegm() function is available
|
||||||
AC_CHECK_DECL([timegm],
|
AC_CHECK_DECL([timegm],
|
||||||
[AC_DEFINE(HAVE_TIMEGM, 1, [Define this if timegm function is available])],
|
[AC_DEFINE(HAVE_TIMEGM, 1, [Define this if timegm function is available])],
|
||||||
,
|
,
|
||||||
[#include <time.h>])
|
[#include <time.h>])
|
||||||
|
|
||||||
|
dnl Check if non standard eaccess() function is available
|
||||||
|
AC_CHECK_DECL([eaccess],
|
||||||
|
[AC_DEFINE(HAVE_EACCESS, 1, [Define this if eaccess function is available])],
|
||||||
|
,
|
||||||
|
[#include <unistd.h>])
|
||||||
|
|
||||||
THREAD_LIBS=-lpthread
|
THREAD_LIBS=-lpthread
|
||||||
AC_SUBST(THREAD_LIBS)
|
AC_SUBST(THREAD_LIBS)
|
||||||
|
|
||||||
|
@ -22,10 +22,15 @@
|
|||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <langinfo.h>
|
#include <langinfo.h>
|
||||||
|
|
||||||
/* for eaccess, defined in unistd.h */
|
|
||||||
#define __USE_GNU
|
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
|
/* if we don't have eaccess, we check file access by openning it */
|
||||||
|
#ifndef HAVE_EACCESS
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/stat.h>
|
||||||
|
#include <fcntl.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
int int_pow(int base, int power)
|
int int_pow(int base, int power)
|
||||||
{
|
{
|
||||||
int result = 1;
|
int result = 1;
|
||||||
@ -1117,7 +1122,22 @@ time_t iso_datetime_read_17(const uint8_t *buf)
|
|||||||
*/
|
*/
|
||||||
int iso_eaccess(const char *path)
|
int iso_eaccess(const char *path)
|
||||||
{
|
{
|
||||||
if (eaccess(path, R_OK) != 0) {
|
int access;
|
||||||
|
|
||||||
|
/* use non standard eaccess when available, open() otherwise */
|
||||||
|
#ifdef HAVE_EACCESS
|
||||||
|
access = !eaccess(path, R_OK);
|
||||||
|
#else
|
||||||
|
int fd = open(path, O_RDONLY);
|
||||||
|
if (fd != -1) {
|
||||||
|
close(fd);
|
||||||
|
access = 1;
|
||||||
|
} else {
|
||||||
|
access = 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (!access) {
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
/* error, choose an appropriate return code */
|
/* error, choose an appropriate return code */
|
||||||
|
Loading…
Reference in New Issue
Block a user