libevent-1.1b-mingw.diff 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641
  1. === Makefile.am
  2. ==================================================================
  3. --- Makefile.am (revision 8794)
  4. +++ Makefile.am (local)
  5. @@ -1,6 +1,5 @@
  6. AUTOMAKE_OPTIONS = foreign no-dependencies
  7. -SUBDIRS = . sample test
  8. EXTRA_DIST = acconfig.h event.h event-internal.h log.h evsignal.h event.3 \
  9. kqueue.c epoll_sub.c epoll.c select.c rtsig.c poll.c signal.c \
  10. @@ -20,13 +19,29 @@
  11. lib_LTLIBRARIES = libevent.la
  12. -libevent_la_SOURCES = event.c buffer.c evbuffer.c log.c
  13. +if BUILD_WIN32
  14. +
  15. +SUBDIRS = . sample
  16. +SYS_LIBS = -lws2_32
  17. +SYS_SRC = WIN32-Code/misc.c WIN32-Code/win32.c
  18. +SYS_INCLUDES = -IWIN32-Code
  19. +
  20. +else
  21. +
  22. +SUBDIRS = . sample test
  23. +SYS_LIBS =
  24. +SYS_SRC =
  25. +SYS_INCLUDES =
  26. +
  27. +endif
  28. +
  29. +libevent_la_SOURCES = event.c buffer.c evbuffer.c log.c $(SYS_SRC)
  30. libevent_la_LIBADD = @LTLIBOBJS@
  31. libevent_la_LDFLAGS = -release @VERSION@ -version-info 1:2:0
  32. include_HEADERS = event.h
  33. -INCLUDES = -Icompat
  34. +INCLUDES = -Icompat $(SYS_INCLUDES)
  35. man_MANS = event.3
  36. === WIN32-Code/misc.c
  37. ==================================================================
  38. --- WIN32-Code/misc.c (revision 8794)
  39. +++ WIN32-Code/misc.c (local)
  40. @@ -4,6 +4,12 @@
  41. #include <sys/timeb.h>
  42. #include <time.h>
  43. +#ifdef __GNUC__
  44. +/*our prototypes for timeval and timezone are in here, just in case the above
  45. + headers don't have them*/
  46. +#include "misc.h"
  47. +#endif
  48. +
  49. /****************************************************************************
  50. *
  51. * Function: gettimeofday(struct timeval *, struct timezone *)
  52. === WIN32-Code/misc.h
  53. ==================================================================
  54. --- WIN32-Code/misc.h (revision 8794)
  55. +++ WIN32-Code/misc.h (local)
  56. @@ -1,6 +1,9 @@
  57. #ifndef MISC_H
  58. #define MISC_H
  59. +struct timezone;
  60. +struct timeval;
  61. +
  62. int gettimeofday(struct timeval *,struct timezone *);
  63. #endif
  64. === WIN32-Code/win32.c
  65. ==================================================================
  66. --- WIN32-Code/win32.c (revision 8794)
  67. +++ WIN32-Code/win32.c (local)
  68. @@ -60,7 +60,8 @@
  69. /* MSDN says this is required to handle SIGFPE */
  70. volatile double SIGFPE_REQ = 0.0f;
  71. -int signal_handler(int sig);
  72. +static void signal_handler(int sig);
  73. +
  74. void signal_process(void);
  75. int signal_recalc(void);
  76. @@ -205,8 +206,9 @@
  77. }
  78. int
  79. -win32_insert(struct win32op *win32op, struct event *ev)
  80. +win32_insert(void *op, struct event *ev)
  81. {
  82. + struct win32op *win32op = op;
  83. int i;
  84. if (ev->ev_events & EV_SIGNAL) {
  85. @@ -251,8 +253,9 @@
  86. }
  87. int
  88. -win32_del(struct win32op *win32op, struct event *ev)
  89. +win32_del(void *op, struct event *ev)
  90. {
  91. + struct win32op *win32op = op;
  92. int i, found;
  93. if (ev->ev_events & EV_SIGNAL)
  94. @@ -302,9 +305,10 @@
  95. */
  96. int
  97. -win32_dispatch(struct event_base *base, struct win32op *win32op,
  98. +win32_dispatch(struct event_base *base, void *op,
  99. struct timeval *tv)
  100. {
  101. + struct win32op *win32op = op;
  102. int res = 0;
  103. int i;
  104. int fd_count;
  105. @@ -366,13 +370,11 @@
  106. }
  107. -static int
  108. +static void
  109. signal_handler(int sig)
  110. {
  111. evsigcaught[sig]++;
  112. signal_caught = 1;
  113. -
  114. - return 0;
  115. }
  116. int
  117. === buffer.c
  118. ==================================================================
  119. --- buffer.c (revision 8794)
  120. +++ buffer.c (local)
  121. @@ -197,7 +197,7 @@
  122. u_char *data = EVBUFFER_DATA(buffer);
  123. size_t len = EVBUFFER_LENGTH(buffer);
  124. char *line;
  125. - u_int i;
  126. + unsigned int i;
  127. for (i = 0; i < len; i++) {
  128. if (data[i] == '\r' || data[i] == '\n')
  129. === configure.in
  130. ==================================================================
  131. --- configure.in (revision 8794)
  132. +++ configure.in (local)
  133. @@ -111,6 +111,22 @@
  134. )
  135. fi
  136. +dnl - check if the macro WIN32 is defined on this compiler.
  137. +dnl - (this is how we check for a windows version of GCC)
  138. +AC_MSG_CHECKING(for WIN32)
  139. +AC_TRY_COMPILE(,
  140. + [
  141. + #ifndef WIN32
  142. + #error
  143. + #endif
  144. + ],
  145. + bwin32=true; AC_MSG_RESULT(yes),
  146. + bwin32=false; AC_MSG_RESULT(no),
  147. +)
  148. +
  149. +AM_CONDITIONAL(BUILD_WIN32, test x$bwin32 = xtrue)
  150. +
  151. +
  152. dnl Checks for typedefs, structures, and compiler characteristics.
  153. AC_C_CONST
  154. AC_C_INLINE
  155. === evbuffer.c
  156. ==================================================================
  157. --- evbuffer.c (revision 8794)
  158. +++ evbuffer.c (local)
  159. @@ -130,7 +130,6 @@
  160. /* Invoke the user callback - must always be called last */
  161. (*bufev->readcb)(bufev, bufev->cbarg);
  162. return;
  163. -
  164. reschedule:
  165. bufferevent_add(&bufev->ev_read, bufev->timeout_read);
  166. return;
  167. @@ -154,12 +153,20 @@
  168. if (EVBUFFER_LENGTH(bufev->output)) {
  169. res = evbuffer_write(bufev->output, fd);
  170. if (res == -1) {
  171. +#ifndef WIN32
  172. +/*todo. evbuffer uses WriteFile when WIN32 is set. WIN32 system calls do not
  173. + *set errno. thus this error checking is not portable*/
  174. if (errno == EAGAIN ||
  175. errno == EINTR ||
  176. errno == EINPROGRESS)
  177. goto reschedule;
  178. /* error case */
  179. what |= EVBUFFER_ERROR;
  180. +
  181. +#else
  182. + goto reschedule;
  183. +#endif
  184. +
  185. } else if (res == 0) {
  186. /* eof case */
  187. what |= EVBUFFER_EOF;
  188. @@ -181,6 +188,7 @@
  189. return;
  190. reschedule:
  191. +
  192. if (EVBUFFER_LENGTH(bufev->output) != 0)
  193. bufferevent_add(&bufev->ev_write, bufev->timeout_write);
  194. return;
  195. === install-sh
  196. ==================================================================
  197. --- install-sh (revision 8794)
  198. +++ install-sh (local)
  199. @@ -1,15 +1,27 @@
  200. -#! /bin/sh
  201. +#!/bin/sh
  202. #
  203. # install - install a program, script, or datafile
  204. -# This comes from X11R5.
  205. +# This comes from X11R5 (mit/util/scripts/install.sh).
  206. #
  207. +# Copyright 1991 by the Massachusetts Institute of Technology
  208. +#
  209. +# Permission to use, copy, modify, distribute, and sell this software and its
  210. +# documentation for any purpose is hereby granted without fee, provided that
  211. +# the above copyright notice appear in all copies and that both that
  212. +# copyright notice and this permission notice appear in supporting
  213. +# documentation, and that the name of M.I.T. not be used in advertising or
  214. +# publicity pertaining to distribution of the software without specific,
  215. +# written prior permission. M.I.T. makes no representations about the
  216. +# suitability of this software for any purpose. It is provided "as is"
  217. +# without express or implied warranty.
  218. +#
  219. # Calling this script install-sh is preferred over install.sh, to prevent
  220. # `make' implicit rules from creating a file called install from it
  221. # when there is no Makefile.
  222. #
  223. # This script is compatible with the BSD install script, but was written
  224. -# from scratch.
  225. -#
  226. +# from scratch. It can only install one file at a time, a restriction
  227. +# shared with many OS's install programs.
  228. # set DOITPROG to echo to test this script
  229. @@ -29,7 +41,7 @@
  230. rmprog="${RMPROG-rm}"
  231. mkdirprog="${MKDIRPROG-mkdir}"
  232. -tranformbasename=""
  233. +transformbasename=""
  234. transform_arg=""
  235. instcmd="$mvprog"
  236. chmodcmd="$chmodprog 0755"
  237. @@ -97,7 +109,7 @@
  238. echo "install: no input file specified"
  239. exit 1
  240. else
  241. - true
  242. + :
  243. fi
  244. if [ x"$dir_arg" != x ]; then
  245. @@ -106,8 +118,9 @@
  246. if [ -d $dst ]; then
  247. instcmd=:
  248. + chmodcmd=""
  249. else
  250. - instcmd=mkdir
  251. + instcmd=$mkdirprog
  252. fi
  253. else
  254. @@ -115,9 +128,9 @@
  255. # might cause directories to be created, which would be especially bad
  256. # if $src (and thus $dsttmp) contains '*'.
  257. - if [ -f $src -o -d $src ]
  258. + if [ -f "$src" ] || [ -d "$src" ]
  259. then
  260. - true
  261. + :
  262. else
  263. echo "install: $src does not exist"
  264. exit 1
  265. @@ -128,7 +141,7 @@
  266. echo "install: no destination specified"
  267. exit 1
  268. else
  269. - true
  270. + :
  271. fi
  272. # If destination is a directory, append the input filename; if your system
  273. @@ -138,7 +151,7 @@
  274. then
  275. dst="$dst"/`basename $src`
  276. else
  277. - true
  278. + :
  279. fi
  280. fi
  281. @@ -150,8 +163,8 @@
  282. # Skip lots of stat calls in the usual case.
  283. if [ ! -d "$dstdir" ]; then
  284. -defaultIFS='
  285. -'
  286. +defaultIFS='
  287. + '
  288. IFS="${IFS-${defaultIFS}}"
  289. oIFS="${IFS}"
  290. @@ -170,7 +183,7 @@
  291. then
  292. $mkdirprog "${pathcomp}"
  293. else
  294. - true
  295. + :
  296. fi
  297. pathcomp="${pathcomp}/"
  298. @@ -181,10 +194,10 @@
  299. then
  300. $doit $instcmd $dst &&
  301. - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
  302. - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
  303. - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
  304. - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
  305. + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else : ; fi &&
  306. + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else : ; fi &&
  307. + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else : ; fi &&
  308. + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else : ; fi
  309. else
  310. # If we're going to rename the final executable, determine the name now.
  311. @@ -203,7 +216,7 @@
  312. then
  313. dstfile=`basename $dst`
  314. else
  315. - true
  316. + :
  317. fi
  318. # Make a temp file name in the proper directory.
  319. @@ -222,10 +235,10 @@
  320. # ignore errors from any of these, just make sure not to ignore
  321. # errors from the above "$doit $instcmd $src $dsttmp" command.
  322. - if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
  323. - if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
  324. - if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
  325. - if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
  326. + if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else :;fi &&
  327. + if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else :;fi &&
  328. + if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else :;fi &&
  329. + if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else :;fi &&
  330. # Now rename the file to the real destination.
  331. === missing
  332. ==================================================================
  333. --- missing (revision 8794)
  334. +++ missing (local)
  335. @@ -1,10 +1,6 @@
  336. #! /bin/sh
  337. # Common stub for a few missing GNU programs while installing.
  338. -
  339. -scriptversion=2003-09-02.23
  340. -
  341. -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003
  342. -# Free Software Foundation, Inc.
  343. +# Copyright (C) 1996, 1997, 1999, 2000, 2002 Free Software Foundation, Inc.
  344. # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
  345. # This program is free software; you can redistribute it and/or modify
  346. @@ -42,23 +38,12 @@
  347. configure_ac=configure.in
  348. fi
  349. -msg="missing on your system"
  350. -
  351. case "$1" in
  352. --run)
  353. # Try to run requested program, and just exit if it succeeds.
  354. run=
  355. shift
  356. "$@" && exit 0
  357. - # Exit code 63 means version mismatch. This often happens
  358. - # when the user try to use an ancient version of a tool on
  359. - # a file that requires a minimum version. In this case we
  360. - # we should proceed has if the program had been absent, or
  361. - # if --run hadn't been passed.
  362. - if test $? = 63; then
  363. - run=:
  364. - msg="probably too old"
  365. - fi
  366. ;;
  367. esac
  368. @@ -89,13 +74,11 @@
  369. lex create \`lex.yy.c', if possible, from existing .c
  370. makeinfo touch the output file
  371. tar try tar, gnutar, gtar, then tar without non-portable flags
  372. - yacc create \`y.tab.[ch]', if possible, from existing .[ch]
  373. -
  374. -Send bug reports to <bug-automake@gnu.org>."
  375. + yacc create \`y.tab.[ch]', if possible, from existing .[ch]"
  376. ;;
  377. -v|--v|--ve|--ver|--vers|--versi|--versio|--version)
  378. - echo "missing $scriptversion (GNU Automake)"
  379. + echo "missing 0.4 - GNU automake"
  380. ;;
  381. -*)
  382. @@ -111,7 +94,7 @@
  383. fi
  384. echo 1>&2 "\
  385. -WARNING: \`$1' is $msg. You should only need it if
  386. +WARNING: \`$1' is missing on your system. You should only need it if
  387. you modified \`acinclude.m4' or \`${configure_ac}'. You might want
  388. to install the \`Automake' and \`Perl' packages. Grab them from
  389. any GNU archive site."
  390. @@ -125,7 +108,7 @@
  391. fi
  392. echo 1>&2 "\
  393. -WARNING: \`$1' is $msg. You should only need it if
  394. +WARNING: \`$1' is missing on your system. You should only need it if
  395. you modified \`${configure_ac}'. You might want to install the
  396. \`Autoconf' and \`GNU m4' packages. Grab them from any GNU
  397. archive site."
  398. @@ -139,7 +122,7 @@
  399. fi
  400. echo 1>&2 "\
  401. -WARNING: \`$1' is $msg. You should only need it if
  402. +WARNING: \`$1' is missing on your system. You should only need it if
  403. you modified \`acconfig.h' or \`${configure_ac}'. You might want
  404. to install the \`Autoconf' and \`GNU m4' packages. Grab them
  405. from any GNU archive site."
  406. @@ -163,7 +146,7 @@
  407. fi
  408. echo 1>&2 "\
  409. -WARNING: \`$1' is $msg. You should only need it if
  410. +WARNING: \`$1' is missing on your system. You should only need it if
  411. you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'.
  412. You might want to install the \`Automake' and \`Perl' packages.
  413. Grab them from any GNU archive site."
  414. @@ -179,10 +162,10 @@
  415. fi
  416. echo 1>&2 "\
  417. -WARNING: \`$1' is needed, but is $msg.
  418. - You might have modified some files without having the
  419. +WARNING: \`$1' is needed, and you do not seem to have it handy on your
  420. + system. You might have modified some files without having the
  421. proper tools for further handling them.
  422. - You can get \`$1' as part of \`Autoconf' from any GNU
  423. + You can get \`$1Help2man' as part of \`Autoconf' from any GNU
  424. archive site."
  425. file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
  426. @@ -202,7 +185,7 @@
  427. bison|yacc)
  428. echo 1>&2 "\
  429. -WARNING: \`$1' $msg. You should only need it if
  430. +WARNING: \`$1' is missing on your system. You should only need it if
  431. you modified a \`.y' file. You may need the \`Bison' package
  432. in order for those modifications to take effect. You can get
  433. \`Bison' from any GNU archive site."
  434. @@ -232,7 +215,7 @@
  435. lex|flex)
  436. echo 1>&2 "\
  437. -WARNING: \`$1' is $msg. You should only need it if
  438. +WARNING: \`$1' is missing on your system. You should only need it if
  439. you modified a \`.l' file. You may need the \`Flex' package
  440. in order for those modifications to take effect. You can get
  441. \`Flex' from any GNU archive site."
  442. @@ -260,7 +243,7 @@
  443. fi
  444. echo 1>&2 "\
  445. -WARNING: \`$1' is $msg. You should only need it if
  446. +WARNING: \`$1' is missing on your system. You should only need it if
  447. you modified a dependency of a manual page. You may need the
  448. \`Help2man' package in order for those modifications to take
  449. effect. You can get \`Help2man' from any GNU archive site."
  450. @@ -285,7 +268,7 @@
  451. fi
  452. echo 1>&2 "\
  453. -WARNING: \`$1' is $msg. You should only need it if
  454. +WARNING: \`$1' is missing on your system. You should only need it if
  455. you modified a \`.texi' or \`.texinfo' file, or any other file
  456. indirectly affecting the aspect of the manual. The spurious
  457. call might also be the consequence of using a buggy \`make' (AIX,
  458. @@ -340,10 +323,10 @@
  459. *)
  460. echo 1>&2 "\
  461. -WARNING: \`$1' is needed, and is $msg.
  462. - You might have modified some files without having the
  463. +WARNING: \`$1' is needed, and you do not seem to have it handy on your
  464. + system. You might have modified some files without having the
  465. proper tools for further handling them. Check the \`README' file,
  466. - it often tells you about the needed prerequisites for installing
  467. + it often tells you about the needed prerequirements for installing
  468. this package. You may also peek at any GNU archive site, in case
  469. some other package would contain this missing \`$1' program."
  470. exit 1
  471. @@ -351,10 +334,3 @@
  472. esac
  473. exit 0
  474. -
  475. -# Local variables:
  476. -# eval: (add-hook 'write-file-hooks 'time-stamp)
  477. -# time-stamp-start: "scriptversion="
  478. -# time-stamp-format: "%:y-%02m-%02d.%02H"
  479. -# time-stamp-end: "$"
  480. -# End:
  481. === mkinstalldirs
  482. ==================================================================
  483. --- mkinstalldirs (revision 8794)
  484. +++ mkinstalldirs (local)
  485. @@ -4,12 +4,56 @@
  486. # Created: 1993-05-16
  487. # Public domain
  488. -# $Id$
  489. -
  490. errstatus=0
  491. +dirmode=""
  492. +usage="\
  493. +Usage: mkinstalldirs [-h] [--help] [-m mode] dir ..."
  494. +
  495. +# process command line arguments
  496. +while test $# -gt 0 ; do
  497. + case "${1}" in
  498. + -h | --help | --h* ) # -h for help
  499. + echo "${usage}" 1>&2; exit 0 ;;
  500. + -m ) # -m PERM arg
  501. + shift
  502. + test $# -eq 0 && { echo "${usage}" 1>&2; exit 1; }
  503. + dirmode="${1}"
  504. + shift ;;
  505. + -- ) shift; break ;; # stop option processing
  506. + -* ) echo "${usage}" 1>&2; exit 1 ;; # unknown option
  507. + * ) break ;; # first non-opt arg
  508. + esac
  509. +done
  510. +
  511. for file
  512. do
  513. + if test -d "$file"; then
  514. + shift
  515. + else
  516. + break
  517. + fi
  518. +done
  519. +
  520. +case $# in
  521. +0) exit 0 ;;
  522. +esac
  523. +
  524. +case $dirmode in
  525. +'')
  526. + if mkdir -p -- . 2>/dev/null; then
  527. + echo "mkdir -p -- $*"
  528. + exec mkdir -p -- "$@"
  529. + fi ;;
  530. +*)
  531. + if mkdir -m "$dirmode" -p -- . 2>/dev/null; then
  532. + echo "mkdir -m $dirmode -p -- $*"
  533. + exec mkdir -m "$dirmode" -p -- "$@"
  534. + fi ;;
  535. +esac
  536. +
  537. +for file
  538. +do
  539. set fnord `echo ":$file" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`
  540. shift
  541. @@ -22,13 +66,24 @@
  542. esac
  543. if test ! -d "$pathcomp"; then
  544. - echo "mkdir $pathcomp"
  545. + echo "mkdir $pathcomp"
  546. - mkdir "$pathcomp" || lasterr=$?
  547. + mkdir "$pathcomp" || lasterr=$?
  548. - if test ! -d "$pathcomp"; then
  549. - errstatus=$lasterr
  550. - fi
  551. + if test ! -d "$pathcomp"; then
  552. + errstatus=$lasterr
  553. + else
  554. + if test ! -z "$dirmode"; then
  555. + echo "chmod $dirmode $pathcomp"
  556. +
  557. + lasterr=""
  558. + chmod "$dirmode" "$pathcomp" || lasterr=$?
  559. +
  560. + if test ! -z "$lasterr"; then
  561. + errstatus=$lasterr
  562. + fi
  563. + fi
  564. + fi
  565. fi
  566. pathcomp="$pathcomp/"
  567. @@ -37,4 +92,8 @@
  568. exit $errstatus
  569. +# Local Variables:
  570. +# mode: shell-script
  571. +# sh-indentation: 3
  572. +# End:
  573. # mkinstalldirs ends here