Changeset librcc,53
- Timestamp:
- 10/10/09 04:16:23 (1 month ago)
- branch-nick:
- librcc
- Files:
-
- librcc/.bzrignore (modified) (1 diff)
- librcc/autogen.sh (modified) (5 diffs)
- librcc/configure.in (modified) (4 diffs)
- librcc/engines/Makefile.am (modified) (1 diff)
- librcc/src/rcclock.c (modified) (4 diffs)
- librcc/src/rccstring.h (modified) (1 diff)
- librcc/src/rccxml.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
librcc/.bzrignore
r52 r53 33 33 lt~obsolete.m4 34 34 external/rccexternal 35 stamp-h.in librcc/autogen.sh
r49 r53 4 4 5 5 KEYFILE=src/librcc.c 6 6 7 7 8 # Some OS's have multiple versions (autoconf259, etc.) and don't have an … … 12 13 then 13 14 AUTOCONF=autoconf 14 AUTOMAKE=automake15 ACLOCAL=aclocal16 15 LIBTOOLIZE=libtoolize 17 16 AUTOHEADER=autoheader … … 19 18 FINDPATH=`echo ${PATH}|sed -e 's,:, ,g'` 20 19 AUTOCONF=`find ${FINDPATH} -name "autoconf*"|sort -r|head -1` 21 AUTOMAKE=`find ${FINDPATH} -name "automake*"|sort -r|head -1`22 ACLOCAL=`find ${FINDPATH} -name "aclocal*"|sort -r|head -1`23 20 LIBTOOLIZE=`find ${FINDPATH} -name "libtoolize*"|sort -r|head -1` 24 21 AUTOHEADER=`find /usr/bin /usr/local/bin -name "autoheader*"|sort -r|head -1` 25 22 echo "$0: autoconf: using ${AUTOCONF}" 23 echo "$0: libtoolize: using ${LIBTOOLIZE}" 24 echo "$0: autoheader: using ${AUTOHEADER}" 25 fi 26 27 AUTOMAKE=`which automake` 28 if test x"${AUTOMAKE}" != x -a -f "${AUTOMAKE}" 29 then 30 AUTOMAKE=automake 31 ACLOCAL=aclocal 32 else 33 FINDPATH=`echo ${PATH}|sed -e 's,:, ,g'` 34 AUTOMAKE=`find ${FINDPATH} -name "automake*"|sort -r|head -1` 35 ACLOCAL=`find ${FINDPATH} -name "aclocal*"|sort -r|head -1` 26 36 echo "$0: automake: using ${AUTOMAKE}" 27 37 echo "$0: aclocal: using ${ACLOCAL}" 28 echo "$0: libtoolize: using ${LIBTOOLIZE}"29 echo "$0: autoheader: using ${AUTOHEADER}"30 38 fi 31 39 … … 46 54 AUTOCONF_FLAGS=-Wno-obsolete 47 55 48 die() 49 { 56 57 if [ ! -f $KEYFILE ] 58 then 59 echo "$PROG: key-file \`$KEYFILE' not found, exiting." >&2 60 echo "$PROG: hint: you should run $PROG from top-level sourse directory." >&2 61 exit 1 62 fi 63 64 65 boldface="`tput bold 2>/dev/null`" 66 normal="`tput sgr0 2>/dev/null`" 67 68 printbold() { 69 echo $ECHO_N "$boldface" 70 echo "$@" 71 echo $ECHO_N "$normal" 72 } 73 74 printerr() { 75 echo "$@" >&2 76 } 77 78 die() { 50 79 err=$? 51 80 echo "$PROG: exited by previous error(s), return code was $err" >&2 … … 53 82 } 54 83 55 if [ ! -f $KEYFILE ] 56 then 57 echo "$PROG: key-file \`$KEYFILE' not found, exiting." >&2 58 echo "$PROG: hint: you should run $PROG from top-level sourse directory." >&2 59 exit 1 60 fi 84 REQUIRED_M4MACROS=${REQUIRED_M4MACROS:-} 85 FORBIDDEN_M4MACROS=${FORBIDDEN_M4MACROS:-} 86 require_m4macro() { 87 case "$REQUIRED_M4MACROS" in 88 $1\ * | *\ $1\ * | *\ $1) ;; 89 *) REQUIRED_M4MACROS="$REQUIRED_M4MACROS $1" ;; 90 esac 91 } 92 93 forbid_m4macro() { 94 case "$FORBIDDEN_M4MACROS" in 95 $1\ * | *\ $1\ * | *\ $1) ;; 96 *) FORBIDDEN_M4MACROS="$FORBIDDEN_M4MACROS $1" ;; 97 esac 98 } 99 100 add_to_cm_macrodirs() { 101 case $cm_macrodirs in 102 "$1 "* | *" $1 "* | *" $1") ;; 103 *) cm_macrodirs="$cm_macrodirs $1";; 104 esac 105 } 106 107 check_m4macros() { 108 # construct list of macro directories 109 cm_macrodirs=`$ACLOCAL --print-ac-dir` 110 # aclocal also searches a version specific dir, eg. /usr/share/aclocal-1.9 111 # but it contains only Automake's own macros, so we can ignore it. 112 113 # Read the dirlist file, supported by Automake >= 1.7. 114 if compare_versions 1.7 $AUTOMAKE_VERSION && [ -s $cm_macrodirs/dirlist ]; then 115 cm_dirlist=`sed 's/[ ]*#.*//;/^$/d' $cm_macrodirs/dirlist` 116 if [ -n "$cm_dirlist" ] ; then 117 for cm_dir in $cm_dirlist; do 118 if [ -d $cm_dir ]; then 119 add_to_cm_macrodirs $cm_dir 120 fi 121 done 122 fi 123 fi 124 125 # Parse $ACLOCAL_FLAGS 126 set - $ACLOCAL_FLAGS 127 while [ $# -gt 0 ]; do 128 if [ "$1" = "-I" ]; then 129 add_to_cm_macrodirs "$2" 130 shift 131 fi 132 shift 133 done 134 135 cm_status=0 136 if [ -n "$REQUIRED_M4MACROS" ]; then 137 printbold "Checking for required M4 macros..." 138 # check that each macro file is in one of the macro dirs 139 for cm_macro in $REQUIRED_M4MACROS; do 140 cm_macrofound=false 141 for cm_dir in $cm_macrodirs; do 142 if [ -f "$cm_dir/$cm_macro" ]; then 143 cm_macrofound=true 144 break 145 fi 146 # The macro dir in Cygwin environments may contain a file 147 # called dirlist containing other directories to look in. 148 if [ -f "$cm_dir/dirlist" ]; then 149 for cm_otherdir in `cat $cm_dir/dirlist`; do 150 if [ -f "$cm_otherdir/$cm_macro" ]; then 151 cm_macrofound=true 152 break 153 fi 154 done 155 fi 156 done 157 if $cm_macrofound; then 158 : 159 else 160 printerr " $cm_macro not found" 161 cm_status=1 162 fi 163 done 164 fi 165 if [ -n "$FORBIDDEN_M4MACROS" ]; then 166 printbold "Checking for forbidden M4 macros..." 167 # check that each macro file is in one of the macro dirs 168 for cm_macro in $FORBIDDEN_M4MACROS; do 169 cm_macrofound=false 170 for cm_dir in $cm_macrodirs; do 171 if [ -f "$cm_dir/$cm_macro" ]; then 172 cm_macrofound=true 173 break 174 fi 175 done 176 if $cm_macrofound; then 177 printerr " $cm_macro found (should be cleared from macros dir)" 178 cm_status=1 179 fi 180 done 181 fi 182 if [ "$cm_status" != 0 ]; then 183 printerr "***Error***: some autoconf macros required to build $PKG_NAME" 184 printerr " were not found in your aclocal path, or some forbidden" 185 printerr " macros were found. Perhaps you need to adjust your" 186 printerr " ACLOCAL_FLAGS?" 187 printerr 188 fi 189 return $cm_status 190 } 191 192 193 # PKG_CONFIG 194 require_m4macro pkg.m4 195 check_m4macros || die 196 197 61 198 62 199 # gettextize ${GETTEXTIZE_FLAGS} librcc/configure.in
r46 r53 29 29 30 30 AM_INIT_AUTOMAKE($PACKAGE, $VERSION) 31 31 AC_CONFIG_MACRO_DIR([m4]) 32 32 33 33 AC_PROG_CC … … 54 54 AC_PATH_PROG(MV, mv, /bin/mv) 55 55 AC_PATH_PROG(TAR, tar, /bin/tar) 56 57 dnl Fixing ugly libtool, see for details 58 dnl http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523750 59 RM="$RM -f" 56 60 57 61 dnl Checks for header files. … … 82 86 dnl *** 83 87 AC_PATH_PROG(GTK_CONFIG, gtk-config, no) 84 AM_CONDITIONAL(HAVE_GTK, [ test $GTK_CONFIG != no ])85 88 if test $GTK_CONFIG = no; then 89 HAVE_GTK=no 90 else 91 GTK1_LIBS="\`gtk-config --libs\`" 92 GTK1_INCLUDES="\`gtk-config --cflags\`" 93 94 saved_CFLAGS="$CFLAGS" 95 CFLAGS="$CFLAGS `gtk-config --cflags`" 96 AC_CHECK_HEADER([gtk/gtk.h], [HAVE_GTK=yes], [HAVE_GTK=no]) 97 CFLAGS=$saved_CFLAGS 98 fi 99 100 AM_CONDITIONAL(HAVE_GTK, [ test $HAVE_GTK = yes ]) 101 102 if test $HAVE_GTK = no; then 86 103 GTK1_LIBS="" 87 104 GTK1_INCLUDES="" 88 HAVE_GTK=no 89 else 90 GTK1_LIBS="\`gtk-config --libs\`" 91 GTK1_INCLUDES="\`gtk-config --cflags\`" 92 HAVE_GTK=yes 93 fi 105 fi 106 94 107 AC_SUBST(GTK1_LIBS) 95 108 AC_SUBST(GTK1_INCLUDES) … … 362 375 363 376 dnl Checks for library functions. 364 AC_CHECK_FUNCS(strcasecmp strncasecmp strdup strnlen )377 AC_CHECK_FUNCS(strcasecmp strncasecmp strdup strnlen flock lockf) 365 378 366 379 AC_OUTPUT(src/Makefile engines/Makefile external/Makefile ui/Makefile examples/Makefile Makefile librcc.spec) librcc/engines/Makefile.am
r42 r53 1 1 lib_LTLIBRARIES = western_engine.la 2 2 3 libdir = $(pkgdatadir) /engines3 libdir = $(pkgdatadir)engines 4 4 5 5 if HAVE_RCD librcc/src/rcclock.c
r50 r53 41 41 # include <sys/stat.h> 42 42 #endif /* HAVE_SYS_STAT_H */ 43 #ifdef HAVE_FCNTL_H 44 # include <fcntl.h> 45 #endif /* HAVE_FCNTL_H */ 43 46 44 47 #include "rcchome.h" … … 71 74 if (lockfd >= 0) { 72 75 for (err = -1, i = 0; i < (LIBRCC_LOCK_WAIT/10); i++) { 76 #if defined(HAVE_FLOCK) 73 77 err = flock(lockfd, LOCK_EX|LOCK_NB); 78 #elif defined(HAVE_LOCKF) 79 err = lockf(lockfd, F_TLOCK, 1); 80 #else 81 # warning "No file locking mechanism is detected" 82 err = 0; // We must believe in best 83 #endif 74 84 if ((err)&&(errno == EWOULDBLOCK)) nanosleep(&wait, NULL); 75 85 else break; … … 86 96 if (lockfd >= 0) { 87 97 for (err = -1, i = 0; i < (LIBRCC_LOCK_WAIT/10); i++) { 98 #if defined(HAVE_FLOCK) 88 99 err = flock(lockfd, LOCK_EX|LOCK_NB); 100 #elif defined(HAVE_LOCKF) 101 err = lockf(lockfd, F_TLOCK, 1); 102 #endif 89 103 if ((err)&&(errno == EWOULDBLOCK)) nanosleep(&wait, NULL); 90 104 else break; … … 122 136 sprintf(stmp,"%s/.rcc/locks/rcc.lock", rcc_home_dir); 123 137 138 #if defined(HAVE_FLOCK) 124 139 flock(lockfd, LOCK_UN); 140 #elif defined(HAVE_LOCKF) 141 lockf(lockfd, F_ULOCK, 1); 142 #endif 143 125 144 close(lockfd); 126 145 lockfd = -1; librcc/src/rccstring.h
r51 r53 39 39 int rccStringChangeID(rcc_string string, rcc_language_id language_id); 40 40 41 #ifdef HAVE_STRNLEN 42 # ifndef strnlen 43 size_t strnlen(const char *str, size_t size); 44 # endif /* !strnlen */ 45 #else 41 #ifndef HAVE_STRNLEN 46 42 int rccStrnlen(const char *str, size_t size); 47 #endif /* HAVE_STRNLEN */43 #endif /* !HAVE_STRNLEN */ 48 44 int rccIsASCII(const char *str); 49 45 size_t rccStringSizedGetChars(const char *str, size_t size); librcc/src/rccxml.c
r50 r53 341 341 fd = open(config, O_CREAT|O_RDWR,00644); 342 342 if (fd == -1) goto clear; 343 344 #if defined(HAVE_FLOCK) 343 345 flock(fd, LOCK_EX); 346 #elif defined(HAVE_LOCKF) 347 lockf(fd, F_LOCK, 1); 348 #endif 344 349 345 350 if ((!fstat(fd, &st))&&(st.st_size)) { … … 464 469 } 465 470 fsync(fd); 466 flock(fd, LOCK_UN); 471 472 #if defined(HAVE_FLOCK) 473 flock(fd, LOCK_UN); 474 #elif defined(HAVE_LOCKF) 475 lockf(fd, F_ULOCK, 1); 476 #endif 477 467 478 close(fd); 468 479 } … … 517 528 518 529 if (fd != -1) { 530 #if defined(HAVE_FLOCK) 519 531 flock(fd, LOCK_EX); 532 #elif defined(HAVE_LOCKF) 533 lockf(fd, F_LOCK, 1); 534 #endif 535 520 536 if ((!fstat(fd, &st))&&(st.st_size)) { 521 537 doc = xmlReadFd(fd, name, NULL, 0); 522 538 } 539 540 #if defined(HAVE_FLOCK) 523 541 flock(fd, LOCK_UN); 542 #elif defined(HAVE_LOCKF) 543 lockf(fd, F_ULOCK, 1); 544 #endif 545 524 546 close(fd); 525 547 … … 534 556 535 557 if (sysfd != -1) { 558 #if defined(HAVE_FLOCK) 536 559 flock(sysfd, LOCK_EX); 560 #elif defined(HAVE_LOCKF) 561 lockf(sysfd, F_LOCK, 1); 562 #endif 563 537 564 if ((!fstat(sysfd, &st))&&(st.st_size)) { 538 565 sysdoc = xmlReadFd(sysfd, name, NULL, 0); 539 566 } 567 568 #if defined(HAVE_FLOCK) 540 569 flock(sysfd, LOCK_UN); 570 #elif defined(HAVE_LOCKF) 571 lockf(sysfd, F_ULOCK, 1); 572 #endif 573 541 574 close(sysfd); 542 575
