From: Frédéric Marchal Date: Tue, 29 Dec 2009 18:17:46 +0000 (+0000) Subject: Restore the creation of the link to the image directory lost during the rewritting... X-Git-Tag: v2_2_7~39 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b5f13803ecf06bf7e4207e58b63fa9815a898bfc;p=thirdparty%2Fsarg.git Restore the creation of the link to the image directory lost during the rewritting of the conversion of the index. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 7982770..ada1bbd 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,6 +104,7 @@ CHECK_INCLUDE_FILE(execinfo.h HAVE_EXECINFO_H) CHECK_FUNCTION_EXISTS(bzero HAVE_BZERO) CHECK_FUNCTION_EXISTS(backtrace HAVE_BACKTRACE) +CHECK_FUNCTION_EXISTS(symlink HAVE_SYMLINK) # Find gd CHECK_INCLUDE_FILE(gd.h HAVE_GD_H) diff --git a/configure b/configure index d525455..9e7752a 100755 --- a/configure +++ b/configure @@ -5976,6 +5976,107 @@ fi done +for ac_func in symlink +do +as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5 +$as_echo_n "checking for $ac_func... " >&6; } +if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +/* Define $ac_func to an innocuous variant, in case declares $ac_func. + For example, HP-UX 11i declares gettimeofday. */ +#define $ac_func innocuous_$ac_func + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $ac_func (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $ac_func + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $ac_func (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$ac_func || defined __stub___$ac_func +choke me +#endif + +int +main () +{ +return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_link") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + $as_test_x conftest$ac_exeext + }; then + eval "$as_ac_var=yes" +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + eval "$as_ac_var=no" +fi + +rm -rf conftest.dSYM +rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ + conftest$ac_exeext conftest.$ac_ext +fi +ac_res=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +as_val=`eval 'as_val=${'$as_ac_var'} + $as_echo "$as_val"'` + if test "x$as_val" = x""yes; then + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + # The cast to long int works around a bug in the HP C Compiler # version HP92453-01 B.11.11.23709.GP, which incorrectly rejects # declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. diff --git a/configure.in b/configure.in index d03713c..1c76dbd 100644 --- a/configure.in +++ b/configure.in @@ -99,6 +99,7 @@ fi dnl check for functions AC_CHECK_FUNCS(bzero) AC_CHECK_FUNCS(backtrace) +AC_CHECK_FUNCS(symlink) dnl check for the rlim_t size AC_CHECK_SIZEOF(rlim_t,1,[#if HAVE_SYS_RESOURCE_H diff --git a/include/config.h.in b/include/config.h.in index ef853f3..1fe586b 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -49,6 +49,7 @@ #cmakedefine HAVE_MKSTEMP #cmakedefine HAVE_FOPEN64 #cmakedefine HAVE_BACKTRACE +#cmakedefine HAVE_SYMLINK #define RLIM_STRING "@RLIM_STRING@" #define ICONV_CONST @ICONV_CONST@ diff --git a/index.c b/index.c index 11f07ed..6b5d34f 100644 --- a/index.c +++ b/index.c @@ -348,6 +348,7 @@ static void file_index_to_date_index(const char *entry) int y1, y2, d1, d2; int i, j; int ndirlen; + int monthlen; char m1[8], m2[8]; char olddir[MAXLEN], newdir[MAXLEN]; @@ -418,6 +419,7 @@ static void file_index_to_date_index(const char *entry) if(strcmp(m1,m2) != 0) ndirlen+=sprintf(newdir+ndirlen,"/%s-%s",m1,m2); else ndirlen+=sprintf(newdir+ndirlen,"/%s",m1); if(access(newdir, R_OK) != 0) mkdir(newdir,0755); + monthlen=ndirlen; if(d1!=d2) ndirlen+=sprintf(newdir+ndirlen,"/%02d-%02d",d1,d2); else ndirlen+=sprintf(newdir+ndirlen,"/%02d",d1); @@ -427,9 +429,29 @@ static void file_index_to_date_index(const char *entry) exit(1); } - /*! \bug The links to the images in the reports are broken after moving the directories - as the the HTML files are not at the right level for the images any more. - */ + strcpy(newdir+monthlen,"/images"); + if(access(newdir, R_OK) != 0) { +#ifdef HAVE_SYMLINK + char linkdir[MAXLEN]; + + sprintf(linkdir,"%simages",outdir); + if (symlink(linkdir,newdir)) { + fprintf(stderr, "SARG: failed to create link \"%s\" to \"%s\" - %s\n",linkdir,newdir,strerror(errno)); + exit(1); + } +#else + char cmd[MAXLEN]; + int cstatus; + + sprintf(cmd,"ln -s \"%simages\" \"%s/images\"",outdir,newdir); + cstatus=system(cmd); + if (!WIFEXITED(cstatus) || WEXITSTATUS(cstatus)) { + fprintf(stderr, "SARG: command return status %d\n",WEXITSTATUS(cstatus)); + fprintf(stderr, "SARG: command: %s\n",cmd); + exit(1); + } +#endif + } } static void date_index_to_file_index(const char *entry) @@ -511,5 +533,10 @@ static void date_index_to_file_index(const char *entry) (void)closedir( dirp3 ); } (void)closedir( dirp2 ); + + /*! + \bug The links to the images in the reports are broken after moving the directories + as the the HTML files are not at the right level for the images any more. + */ } diff --git a/util.c b/util.c index aa393d9..f956378 100644 --- a/util.c +++ b/util.c @@ -835,7 +835,10 @@ static void copy_images(void) img_ou = fopen(dstfile, "wb"); if(img_ou!=NULL) { while ((nread = fread(buffer,1,sizeof(buffer),img_in))>0) { - fwrite(buffer,1,nread,img_ou); + if (fwrite(buffer,1,nread,img_ou)!=nread) { + fprintf(stderr,"SARG: Failed to copy image %s to %s\n",srcfile,dstfile); + break; + } } fclose(img_ou); } else