sispmctl-3.1/extras/gemplug/74-sispmctl.rules0000664000200200017500000000225511664771076020013 0ustar petepete### SiS-PM Gembirds (Gembird Silver Shield power outlets controlled by sispmctl): # # Author: hcz@hczim.de, License: GPLv3 (or later). # Time-stamp: <2008-05-03 11:45:31 hcz> # See gemplug(1), section "HELPER FILES" for an explanation on what # this file is meant for. # Note that udev rules are applied when a device gets added and/or # removed from the system. So unplug and then replug your devices (or # reboot) for changes to become effective after you've done # modifications. (You also could trigger a rule manually - see # udevadm(8) for this and for more). ### Standard rule: # # make all SiS-PM devices world read/writable: SUBSYSTEMS=="usb", ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="fd1[0-3]", MODE="0666" ### Alternative rule: # # make all SiS-PMs available to a group of users # In order to get there, add your users to group "sispm" - don't # forget to create the group and to add yourself there. Make the rule # above into a comment and de-comment the rule below. Also note that # users need to go through a new login for group changes to take # effect for them: # SUBSYSTEMS=="usb", ATTRS{idVendor}=="04b4", ATTRS{idProduct}=="fd1[0-3]", GROUP="sispm", MODE="0660" sispmctl-3.1/extras/gemplug/gemplug0000775000200200017500000015065311664771076016245 0ustar petepete#!/bin/bash # gemplug # time_stamp="Time-stamp: <2011-03-30 18:26:24 pete>" # # Control multiple Gembird power outlets via sispmctl # # (c) Heike C. Zimmerer # # This program is licensed as follows: # LICENSE="\ This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License, version 3, as published by the Free Software Foundation. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see ." # History: # 2008-04-23 v42.03 hcz first public release # listOneOutlet: section was listed twice # rc file: tried to write inte /etc when rc file was located there # $_h/$_x: hour in interval spec was messed up # more permission cleanup when run with config in /etc/gemplug # don't allow the same pos|serial to be referenced more than onec # 2008-04-24 v42.04 hcz # "path =" statement added # Changes to rcfile updates # 2008-04-28 v42.05 hcz # -m, -L, pre-off, post-off, pre-on, post-on # 2008-05-07 v42.06 hcz # any sispcmtl command is now re-checked and re-executed (if needed). # (Don't know if the spurious errors I'm enconutering are caused # by flaky Hardware here or if its is a more basic problem with # sispmctl or one of its libs.) # Included gemplug version number into file last_sispmctl_S so any # version change will trigger a rebuild of the configuration data. # 2008-05-23 v42.07 hcz # Locking code revised. Re-execute sispmctl on error return. # 2008-06-16 v42.08 hcz # Barfed when started for the 1st time (without a config file). # Fixed. # 2008-06-24 v42.09 hcz # -e option added. # 2008-06-27 v42.10 hcz # option -g: result code reversed # 2008-07-02 v42.11 hcz # compiled_rc was unneccessarily witten way too often # 2008-07-06 v42.12 # get $HOME from /etc/passwd if undefined (e.g., during system # startup) # 2008-07-09 v42.13 # still an error when $HOME was undefined. Fixed. # 2008-07-09 v42.14 # use full path to gemplug command in at jobs if available # 2008-08-22 v42.15 # typo in usage text corrected # 2008-10-14 v42.16 # time format returned by 'at' differs between versions. # Function fillPending_jobs changed to accept about any format. # LC_ALL is now set at any incocation of 'at'. # get_usb_pos: traverse: var 'level' made local. # 2011-03-30 v42.17 pete # make gemplug work with sispmctl 3.0 (new -s output-layout) version="gemplug version 42.17" # TODO: parser: allow empty outlets (will not be shown) # man: -e # install.sh: x permissins on gemplug usage(){ echo "\ Usage: $pname [-opts] [] lists available outlets along with their state $pname [-opts] Switch Gembird power outlet $pname [-opts] -e Switch Gembird power outlet, execute command, switch back $pname [-opts] [at|after ] [until|for ] Switch Gembird outlets to and reverse at specified times Time specifications must be enclosed in quotes if they contain white space. 'at' and 'until' expect time-of-day specifications. Any format which is acceptable by the 'date -d' command may be used. 'after' and 'for' expect a time interval: days, hours and minutes in descending order, with at least one element marked as being d[ay], h[our], m[inute] or a ':' (separator between hours and minutes). Elements may be omitted as long as their order is preserved. opts: job-related: -j [ [...]] list pending jobs (default: all) -k [...] kill pending jobs (outlet-name=ALL kills all) -p [...] kill pending jobs by job number -a new jobs are to be added to already pending jobs -r remove pending jobs -t test: don't actually start jobs -e (3rd argument, after outlet name and state): switch, execute command, then switch opposite output control: -l [ [...]] list multiple outlets -d [ [...]] dump configuration data -v[v[v]] verbose reporting -c don't use colors in output -n report states numerical (0, 1 instead of off, on) -q quiet operation: just results and errors -g set exit code to 0 if outlet active, else 1 misc: -m [...] 0|1|on|off set multiple outlets -f force reconfiguration (redisplay non-fatal errors) -C set world R/W permissions on all devices (requires root privileges) -T write templates for unconfigured devices to stdout -TW append templates for unconfigured devices to configuration file -x script debug (set -x) -X --license display license information -L, --nolock don't acquire lock --version display version info -h, --help display this help Examples: $pname laser 1 for 1:00h # switch on now, 1 hour later off $pname laser 1 at 12:00 for 10min # switch on at 12:00, off 12:10 $pname laser 0 after 12min for '2d 12h' # off +12min, on now+(2d 12h 12min) $pname laser 0 until 'Mon 7:00' # off now until next Monday 7:00" exit } ## global settings dev_bus_usb="/dev/bus/usb" # start of USB device node tree at_queue='d' # at Queue (higher letters mean less priority) # user-editable config my_rc_file="gemplugrc" # local config files last_sispmctl_S="last_sispmctl_S" my_compiled_rc_file="compiled_rc" lockdir="/var/lock/gemplug" pidfile="$lockdir/pid" # more locals sispmctl="/usr/local/bin/sispmctl" my_name="gemplug" # name for this program (to be used in at jobs) my_path="${0%/*}" # path - " - sudo= # prefix sispmctl commands by that (default: empty) # if called from init.d, we don't have a $HOME if [ -z "$HOME" ]; then export HOME="$( getent passwd $(id -u) \ | (IFS=: read user pwd id1 id2 name HOME rest; echo "$HOME") )" fi [ -z "$HOME" ] && HOME=/tmp # last resort export HOME rcdirs=("$HOME/.$my_name" "/etc/$my_name") if [ -d "$HOME/.config" ]; then rcdirs=("$HOME/.config/$my_name" "${rcdirs[@]}") fi default_HOME="/root" # If there's no $HOME, try if /root is writable ## end global settings # some regexp shortcuts: _s='[ ]' # space TAB _S='[^ ]' # not space TAB _c='(^|[ ])[;#]' # comment start chars _nl=$'\n' _h='h(o(u(rs?)?)?)?' # adds 3 round brackets into regex _m='m(i(n(u(t(es?)?)?)?)?)?' # +5 _d='d(a(ys?)?)?' # +2 _n='[0-9]+' _x='[0-9a-f]+' _s='[ ]' vCmd(){ echo >&2 ": $*" "$@" } getColors(){ have_colors=1 bold=$(tput bold) color_reset=$(tput op)$(tput sgr0) # Reset color + attribs for color in "black 0" "red 1" "green 2" "brown 3" \ "blue 4" "magenta 5" "cyan 6" "grey 7"; do set -- $color eval $export color_$1='$(tput setaf $2)' eval $export color_$1_bg='$(tput setab $2)' eval $export color_bold_$1="\$bold\$color_$1" # eval $export color_bold_$1_bg="\$bold\$color_${1}_bg" done } 2>/dev/null needColors(){ [ -z "$TERM$have_term" ] || [ "$have_colors$opt_c" ] || getColors } abort(){ rmLock needColors echo >&2 "$color_bold_red$pname: $*$color_reset" [ "${#at_registered_dates[@]}" -gt 0 ] && echo >&2 "No scheduled action activated" kill $$ # abort from subshells too (kill main) sleep 1 exit 126 # (usually) not reached } min(){ local min="$1" i for i; do [ "$i" -lt "$min" ] && min="$i" done echo "$i" } rmLock(){ # Syntax: rmLock # removes lock only if it's ours if [ "$(cat 2>/dev/null "$pidfile")" = "$$" ]; then #needColors #echo "${color_bold_grey}${color_magenta_bg}Removing lock$color_reset" rm -rf "$lockdir" fi } needLock(){ # Syntax: needLock # get a lock before executing sispmctl if we don't own it already # Note: sets global 'have_lock' - so make sure this isn't # called from within a subshell local n_tries pid name fail n_retries=${1:-6} bash cmd args RANDOM=$$ # seed RNG #set -x $v3Echo "Need Lock." if [ -z "$have_lock" ]; then $v3Echo "Acquiring Lock ---" if [ ! -w "${lockdir%/*}" ]; then needColors printf >&2 "${color_red}Can't lock ('%s/' not writable)${color_reset}\n" "${lockdir%/*}" return 1 fi trap "rmLock" EXIT # safe because it removes the lock only if it is ours while ! mkdir 2>/dev/null "$lockdir"; do pid=$(cat 2>/dev/null "$pidfile") if [ "$pid" ]; then # check if the PID still belongs to a gemplug process read bash cmd args </dev/null '\000' ' ' < /proc/$pid/cmdline) EOF [ "${cmd##*/}" != "$pname" ] && break # no. fi if [ $((++n_tries)) -gt "$n_retries" ]; then needColors printf >&2 "$color_red%s$color_reset\n" "Giving up on lock '$lockdir'" break fi while :; do rnd="$RANDOM" [ "$rnd" -gt 100 ] && break done rnd="$((${rnd:2:1}/4)).${rnd:1:1}" $v3Echo "Locked by another process, sleeping for $rnd secs" sleep "$rnd" done mkdir -p "$lockdir" # (on dying lock) echo "$$" > "$pidfile" have_lock=1 $v3Echo "Got Lock." else $v3Echo "Already have one" fi #set +x return 0 } trap 'sispmctl_err=1' USR1 execSispmctl(){ local n_tries=3 res while [ $((--n_tries)) -gt 0 ]; do $vCmd "$sispmctl" "$@" && break done res=$? [ "$res" != 0 ] && kill -USR1 $$ return "$res" } assertUnique(){ # Syntax: assertUnique string # Assserts that name (i.e. no spaces) $1 is not yet in array $2 # Then adds it to $2 local name="$1" if eval [[ '${'$2'[*]}' != '*" $1 "*' ]]; then eval $2'[${#'$2'[@]}]="$1"' # insert return 0 fi return 1 } get_usb_pos(){ # (This duplicates functionality which is also found elsewhere, e,g, # in udevinfo, and may be replaced by grepping its output once the # application interface there stablizes. Until then, asking sysfs # directly seems safer against future changes. -2007-11-12 hcz) # regular expressions for the IDs we want the topological position # of: idProduct_re='^fd1[0-3]$' idVendor_re='^04b4$' # max. recursion level: maxlevel=6 # hubs can be daisy chained up to 5 max. # pattern for trees to be traversed (a '*' will be appended): sys_bus_usb_devices_usb="/sys/bus/usb/devices/usb" traverse()( # Syntax: traverse cur_recursion_level cd_to local level="$1" cd "$2" if [[ "$(< idVendor)" =~ $idVendor_re ]] \ && [[ "$(< idProduct)" =~ $idProduct_re ]]; then printf "%03d/%03d %s\n" \ "$( # returns on stdout the index into of , empty if none. local idx eval max_idx='"${#'$1'[@]}"' for ((idx = 0; idx < max_idx; idx++)); do if eval [ '"${'$1'[idx]}"' = '"$2"' ]; then echo "$idx" return fi done } # indices into the elements of a single outlets[] line (rarely used) # index: position after 'set -- $outlet': i_usbpos=0 # $1 i_busdev=1 # $2 i_gemno=2 # $3 i_serial=3 # $4 i_max_outlet_no=4 # $6 i_outlet_no=5 # $6 i_section=6 # $7 i_outlet_name=7 # $8 i_aliases=8 # $9 readRcFile(){ # readRcFile # # interprets the rc file. # # result: outlets[]: Each array element is a string describing 1 outlet: # # 1 2 3 4 5 6 7 .... # "4-2.2 004/005 01:0b:a4:c9:45 0 4 2 Peripherals Scanner ..." # ^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^ ^ ^^^^^^^^^^^ ^^^^^^^^^^^- # | | | | | | | | # | | | | | | | + ---#8 [#9 ..] Outlet name and aliases # | | | | | | +-#7 The device's name (the [ section ]) # | | | | | +---#6: The individual outlets' number within this device # | | | | +-----#5: The total number of outlets # | | | +-------#4: The Gembird's number for sispmctl command # | | +----------------------#3: The Gembird's serial number # | +----------- #2: The USB Bus/device as reorted by get-usb-pos and sispmctl -s # +------------------ #1: The topological pos position as reportet by get-usb-pos # results: # outlets[] # all_names: list of all encountered outlet names and aliases # all_sections: -"- section names local idx idx_new line fatal rc_file cur_gem lineno lineno_for_errmsg local continuation_line perr(){ local skip_sect_new # Syntax: perr [-skip] [-fatal] text while [[ "$1" == -* ]]; do case "$1" in -skip) skip_sect_new=1;; -fatal) fatal=1;; *) abort "${FUNCNAME[1]}: internal error";; esac shift 1 done [ "$errtext" ] && printf "%s\n" "$errtext" printf " %s:\n" "$*" if [ "$have_sect" ]; then printf " line %d, section [%s]: '%s'\n" "$lineno_for_errmsg" "$section" "$orig_line" else printf " line %d: '%s'\n" "$lineno" "$orig_line" fi unset errtext if [ "$skip_sect_new" ] && [ -z "$skip_sect" ]; then echo >&2 "(This error will not be reported again until configuration is changed.)" skip_sect=1 fi } >&2 getIdx(){ # Syntax: getIdx idx # Accepts idx if new or same if [ "$idx" ] && [ "$idx" -ne "$1" ]; then echo $idx perr -fatal "Conflicting pos ('$pos') and serial ('$serial') statements" else idx="$1" gemdev_used[idx]=1 fi } chkIdx(){ # Syntax: chkIdx # barf if idx is undefined [ "$idx" ] && return 0 perr -fatal -skip "need preceding outlet definition" return 1 } # get bus mapping getGemdevArray section="1st" l_section=0 l_outlet=9 if ! findRcFile "$my_rc_file" "${rcdirs[@]}"; then if [ "$opt_T" ]; then for dir in "${rcdirs[@]}"; do rc_file="$dir/$rc_file"UXS touch 2>/dev/null "$rc_file" && break done \ || abort "Cannot create 'my_rc_file' in any of: ${rcdirs[*]}" else abort "Internal: Cannot open $my_rc_file" # should have been recognized earlier fi fi errtext="$pname: in file '$rc_file':" assertUnique "ALL" all_names # enter "ALL" into empty list shopt -s nocasematch { while unset curline; IFS= read -r line; do : $((++lineno)) lineno_for_errmsg="$lineno" while [[ "$line" =~ ^$_s*(.*$_S)$_s*(\\n)(\\)$ ]] \ || [[ "$line" =~ ^$_s*(.*$_S)$_s*(\\)$ ]]; do # handle eol backslash continuation curline="${curline:+$curline }${BASH_REMATCH[1]}" [ "${BASH_REMATCH[3]}" ] && curline="$curline$_nl" IFS= read -r line : $((++lineno)) done line="${curline:+$curline }$line" orig_line="$line" # strip comments off while [[ " $line" =~ ^(.*)$_c.*$ ]]; do $v2Echo "stripping comment: '$line' -> '${BASH_REMATCH[1]}'" line="${BASH_REMATCH[1]}" done # strip leading & trailing whitespace, skip (now) empty lines [[ "$line" =~ ^$_s*($_S+($_s+$_S+)*)$_s*$ ]] || continue # empty line="${BASH_REMATCH[1]}" if [ -z "$skip_sect" ]; then if [[ "$line" =~ ^([[:alpha:]][-[:alnum:]]+)$_s*=$_s*($_S+($_s+$_S+)*)$_s*$ ]]; then config_item="${BASH_REMATCH[1]}" arg="${BASH_REMATCH[2]}" case "$config_item" in pos) # found "pos = 4-2.2" [ "$pos" ] && perr -fatal "duplicate pos statement in section" idx_new=$(findIdx gemdev_usb_pos "$arg") [ "$idx_new" ] || perr -skip "There's no Gembird at USB position '$arg'" assertUnique "$arg" all_pos || perr -fatal "Duplicate position" getIdx "$idx_new" $v2Echo "parse: pos: '$line' -> $pos -> $idx" ;; serial) # found "serial = 01:ffffff9a:ffffffa9:ffffffdb:41 [ "$serial" ] \ && perr -fatal "duplicate serial statement in section [ $section ]" idx_new=$(findIdx gemdev_serial "$arg") [ "$idx_new" ] || perr -skip "Unknown serial '$serial'" assertUnique "$arg" all_serials || perr -fatal "Duplicate serial number" getIdx "$idx_new" $v2Echo "parse: serial: '$line' -> $serial -> $idx" ;; path|pre-on|pre-off|post-on|post-off) chkIdx cur_gem="${gemdev_gembird_no[idx]}" var="gemdev_${cur_gem}_${config_item//-/_}" eval $var[outlet_no]='"$arg"' $v2Echo "parse: $config_item: '$line' -> $var[$outlet_no]='$arg'" ;; *) perr -fatal "Unknown statement '$config_item'" ;; esac elif [[ "$line" =~ ^([0-9])$_s*=$_s*(($_S+)($_s+$_S+)*)$_s*$ ]]; then # found "3 = Laser OKI" len="${#BASH_REMATCH[3]}" # outlet name len outlet_no=${BASH_REMATCH[1]} names=${BASH_REMATCH[2]} for name in $names; do assertUnique "$name" all_names || perr -fatal "Duplicate outlet name '$name'" done if chkIdx; then if [ " ${gemdev_max_outlet[idx]}" -lt "$outlet_no" ]; then skip_sect=1 perr -fatal "Outlet number is $outlet_no but only $n_outlets outlets are available" continue fi [ "$len" -gt "$l_outlet" ] && l_outlet=$len # max outlet name len cur_outlet="${gemdev_usb_pos[idx]} ${gemdev_bus_dev[idx]} ${gemdev_gembird_no[idx]} ${gemdev_serial[idx]} ${gemdev_max_outlet[idx]} $outlet_no $section $names" outlets[${#outlets[@]}]="$cur_outlet" cur_gem="${gemdev_gembird_no[idx]}" #eval 'gemdev_'${cur_gem}'_path['$outlet_no"]=" $v2Echo "parse: outlet: '$line' -> $cur_outlet" fi elif [ -z "$skip_sect" ]; then barf=yes fi [ "$skip_sect" ] && echo >&2 "Skipping the rest of the offending '[ $section ]' section." fi # if [ -z $skip_sect ] if [[ "$line" =~ ^'['$_s*($_S+)$_s*']'$ ]]; then # found "[ Peripherals ]" section="${BASH_REMATCH[1]}" len=${#section} [ "$len" -gt "$l_section" ] && l_section=$len have_sect=1 assertUnique "$section" all_sections || perr -fatal "Duplicate section" unset skip_sect idx pos serial barf cur_outlet $v2Echo "parse: section: '$line' -> '$section'" fi if [ "$barf" ]; then perr -fatal "Not a valid line" abort "Errors in configuration file" fi done [ "$fatal" ] && abort "Errors in configuration file, Aborting." } < "$rc_file" [ -z "$errtext" ] && echo >&2 # Now check if there are any Gembirds left out: for ((idx=0; idx < "${#gemdev_usb_pos[@]}"; idx++)); do if [ "${gemdev_used[idx]}" != "1" ]; then printf >&2 "\ * Note: unconfigured Gembird found at bus/device %s pos = %s serial = %s\n" \ "${gemdev_bus_dev[idx]}" "${gemdev_usb_pos[idx]}" "${gemdev_serial[idx]}" fi done } template_hdr="\ # Configuration template for $my_name # # Created $(date -Imin) for $USER ${HOSTNAME:+on $HOSTNAME} # This file describes the mapping from individual outlet names of # Gembird USB-conrolled power switches to the position of their # devices on the USB and/or to their serial number. ### Some syntax rules: # # Comments # '#' and ':' at the start of a word (i.e. after white space or a # newline) start a comment. All text up to the end of the line will be # ignored. # # Case # All matching is done without regard to case (case-insensitive). # # Names (outlet and Gembird device identifiers) # Names can be made of any non-whitespace characters. They are allowed # to include anything but the following: # - They cannot start with a comment character ('#', ';') # - White space cannot be embedded as it is a delimiter, # - In device (=section) names '[' and ']' cannot be used (delimiters) # # Indenting # Indenting is not mandatory; leading white space is always ignored. Use # it as you like, In all places where white space is allowed/required, # any amount can be used. # # Key elements # All the descriptions of the key elements below are preceded by an # example line demonstrating their use. # # [ Gebird_name ] # Starts a device section, giving the device and the section the name # within the brackets. Any white space between brackets and device # name is optional. # # pos = 3.1 # Names the topological position of the device on the USB as reported # by gemplug -d . # # serial = 01:02:03:04:05 # Names the Gembird's serial number as reported by gemplug -d or sispmctl -s. # # 1 = Outlet-name [Alias ...] # Number, '=', Name Aliases ... names the individual plug outlets. # It can only be used if at least one of pos or serial are given # before and in the same section. If both are given, they are # required to match the same device. Outlet numbers (the numbers in # the first column) count from number 1 upwards per device. ### An example for a device entry: # # [ Peripherals ] # pos = 4-2.2 # 1 = Scanner # 2 = Printer Laser # 3 = DVB-T DVBT Telly # 4 = Backup1 ICY ext_ATA # Here we go: " addOneTemplate(){ # Syntax: addOneTemplate while :; do sect="Gembird-$((++template_section_idx))" assertUnique "$sect" all_sections && break; done printf "\n[ $sect ]\n" "$1" printf " pos = %s # currently at bus/device %s\n" "${gemdev_usb_pos[$1]}" "${gemdev_bus_dev[$1]}" printf " serial = %s # you may remove either pos or serial\n" "${gemdev_serial[$1]}" for ((outlet=1; outlet <= "${gemdev_max_outlet[$1]}"; outlet++)); do while :; do out="OUT-$((template_out_idx++))" assertUnique "$out" all_names && break; done printf " %d = %s\n" "$outlet" "$out" done } addTemplate(){ # Syntax: addTemplate # Adds a template. Creates rc file if needed. local touch_result idx written need_update getGemdevArray echo >&2 "Checking current configuration ..." readRcFile for idx in ${!gemdev_usb_pos[@]}; do if [ "${gemdev_used[idx]}" != 1 ]; then need_update=1 break fi done if [ -z "$need_update" ]; then echo >&2 "Nothing to write (no unconfigured Gembird found)." return fi if [ "$opt_W" ]; then if ! findRcFile "$my_rc_file" "${rcdirs[@]}"; then for rc_dir in "${rcdirs[@]}"; do rc_file="$rc_dir/$my_rc_file" touch_result="$touch_result$_nl$(touch 2>&1 "$rc_file")" && break done if [ $? != 0 ]; then echo "$touch_result" abort "Cannot create configuration file" fi echo "$template_hdr" > "$rc_file" || abort "Cannot write template" fi exec >> "$rc_file" || abort "Can't write template file '$rc_file'" fi for idx in ${!gemdev_usb_pos[@]}; do if [ "${gemdev_used[idx]}" != 1 ]; then [ "$opt_W" ] && printf >&2 "Writing template for unconfigured Gembird at %s\n"\ "${gemdev_bus_dev[idx]}" addOneTemplate "$idx" fi done if [ "$opt_W" ]; then echo >&2 " Configuration written to '$rc_file'. You may now want to edit it and give the items there meaningful names." fi } findRcFile(){ # Syntax: findRcFile .... # returns first file from dirs which is readable # Result in $rc_file (empty if none), true/false local rc_dir fnam="$1" shift for rc_dir in "$@" ""; do rc_file="$rc_dir/$fnam" [ -r "$rc_file" ] && [ -f "$rc_file" ] && return done return 1 } findRcDir_RW(){ # Syntax: findRcFile .... # returns first dir from "$@" which is r/w-able # Result in $rc_dir (empty if none), true/false for rc_dir in "$@" ""; do [ -w "$rc_dir" ] && [ -r "$rc_dir" ] && [ -d "$rc_dir" ] && return done return 1 } initialize(){ local compiled_rc need_update rc_file rc_dir # Find first rc file along $rcdirs[] if findRcFile "$my_compiled_rc_file" "${rcdirs[@]}"; then # set rc_file compiled_conf="$rc_file" else need_update=1 # none fi # find first directory which is writable along rcdirs[] # first, try directory of current rc rc_dir="${rc_file%/*}" if [ -z "$rc_dir" ] || [ ! -w "$rc_dir" ]; then # we don't have write permissions in the rc file's directory if ! findRcDir_RW "${rcdirs[@]}"; then # we have to create our rc directory for rc_dir in "${rcdirs[@]}"; do md_result="$md_result$_nl$(mkdir -m 0755 -p "$rc_dir" 2>&1)" && break done if [ $? -ne 0 ]; then echo "$md_result" abort "Cannot write compiled configuration file" fi fi fi compiled_rc="$rc_dir/$my_compiled_rc_file" last_sispmctl_S="$rc_dir/$last_sispmctl_S" # check if sispmctl -s reports a different config than last time getSispmctlS if [ ! -r "$last_sispmctl_S" ] || [ "$version$_nl$sispmctl_S" != "$(<"$last_sispmctl_S")" ]; then need_update=1 echo "$version$_nl$sispmctl_S" > "$last_sispmctl_S" fi if ! findRcFile "$my_rc_file" "${rcdirs[@]}"; then # set rc_file # None found. echo "No configuration file found. This is where I've looked for one:" for rc_dir in "${rcdirs[@]}"; do echo " $rc_dir/$my_rc_file" done echo "You may try again using the -T or -TW option to create a template." abort "Can't proceed." fi # re-compute outlets[] if needed if [ "$need_update$opt_f" ] \ || [ "$rc_file" -nt "$compiled_conf" ]; then $v2Echo "Parsing '$rc_file'" readRcFile if [ -z "$sispmctl_err" ]; then if [ -e "$compiled_rc" ]; then chmod 0600 "$compiled_rc" || abort "Can't set permissions of '$compiled_rc'" fi printf > "$compiled_rc" "%s\n" "\ # Compiled configuration, generated by $pname at $(date '+%Y-%m-%d %H:%M') # *** DO NOT EDIT ***" declare -p outlets l_section l_outlet ${!gemdev_*} >> "$compiled_rc" getColors colors_TERM="$TERM" declare -p ${!color_*} colors_TERM have_colors >> "$compiled_rc" $vEcho "$compiled_rc written." chmod 0400 "$compiled_rc" || abort "Can't set permissions of '$compiled_rc'" else $vEcho "$compiled_rc NOT written because of sispmctl errors" fi fi } getCurDevStates(){ # Syntax: getCurDevStates [-f] # opt: -f: force read (ignore cached data) # Result in cur_dev_states[] = (sisdev, state0, state 1, ..) local path idx i path_array sispm_result sispm_old i err=0 if [ "$1" = "-f" ]; then shift unset states_cache[sisdev] cur_dev_states else [ "$1" -eq "${cur_dev_states[0]:--1}" ] && return fi sisdev="$1" if [ -z "${states_cache[sisdev]}" ]; then while [ $((++i)) -lt 2 ]; do # -lt 2: agrees 3 times: 0, 1, 2 [ "$err" -gt 10 ] && abort "Can't read Gembird #$sisdev" sispm_old="$sispm_result" sispm_result="$(execSispmctl -n -q -d $sisdev -g all)" || : $((++err)) [ "$err" -gt 20 ] && abort "Can't get a consistent readout from '$sispmctl -n -q -d $sisdev -g all' after $err tries" if [ -n "$sispm_old" ] && [ "$sispm_result" != "$sispm_old" ]; then $vEcho "Unstable readout (was: '"$sispm_old"', is: '"$sispm_result"')from command '$sispmctl -n -q -d $sisdev -g all'" : $((++err)) i=0 fi done states_cache[sisdev]="$1 $sispm_result" set -- ${states_cache[sisdev]} shift # Notify for external program(s) eval 'path_array=( "${'gemdev_${sisdev}_path'[@]}" )' for ((i=0; i < "${#path_array[@]}"; i++)); do path="${path_array[i]}" if [ "$path" ]; then mkdir -p "${path%/*}" if [ "$1" != "$(< "$path")" ]; then echo "$1" > "$path" touch "$path.chgd" echo $(($(<"$path.chgd") + 1)) > "$path.chgd" fi fi shift done fi cur_dev_states=(${states_cache[sisdev]}) } findOutletByName(){ # Sytnax: findPlugByName # Returns: line from outlets[] in stdout local res srch="$1" found shopt -s nocasematch # from now on we're case insensitive for outlet in "${outlets[@]}"; do set -- $outlet shift 7 # skip to 1st name while [ "$1" ]; do case "$1" in $srch*) res="$outlet" found[${#found[@]}]="$1" break ;; esac shift done done if [ "${#found[@]}" -gt 2 ]; then abort "Ambiguous matches for '$srch': ${found[*]}" elif [ -z "$res" ]; then abort "No match for '$srch'" fi echo "$res" } getState(){ # Sytax: getState [-noabort] # returns 0 or 1 on stdout # with 2 Arguments, returns empty string on error, else aborts case "${2:-$1}" in 0|off) echo "0";; 1|on) echo "1";; *) [ "$#" != 2 ] && abort "Can't set to state '$1'. Valid states are: 0, off, 1, on";; esac } setOutlet(){ # Syntax: setOutlet "" state [recursion_level} local outlet="$1" state="$2" recursion_level="${3:-0}" t_echo dev port cmd on_off dev_name execPrePost(){ # Syntax: execPrePost pre|post eval cmd='${gemdev_'${dev}_$1_${on_off}'[port]}' if [ "$cmd" ]; then if ! $t_echo "${SHELL:-/bin/sh}" -c "$set_x$cmd" "${sh_args[@]}"; then echo "$1-$on_off command: '$cmd'" abort "$1-$on_off for outlet '$dev_name' failed" fi fi } set -- $1 dev="$3" port="$6" dev_name="$8" case "$(getState "$state")" in 0) st="0"; opt="-f"; on_off="off";; 1) st="1"; opt="-o"; on_off="on";; esac [ "$opt_X" ] && set_x="set -x; " if [ "$opt_t" ]; then t_echo="echo not executed (-t):" else sh_args=(${my_name}-sh "$@") fi execPrePost pre if [ "$opt_t" ]; then $t_echo "Outlet '$8' set to '$on_off" else execSispmctl -q -d "$3" $opt "$6" fi getCurDevStates -f "$3" if [ "${cur_dev_states[$6]}" != "$st" ]; then if [ "$recursion_level" -lt 3 ]; then $vEcho "$pname: State not reported back. Trying again." setOutlet "$outlet" "$state" $((recursion_level+1)) else abort "Gembird device '$7', outlet '$8' doesn't report back the new setting after $recursion_level retries" fi fi execPrePost post } getOutlet(){ # Syntax: getOutlet # returns state in $state local idx cur=($1) getCurDevStates "${cur[i_gemno]}" state="${cur_dev_states[${cur[i_outlet_no]}]}" } dumpOutlet(){ # Syntax: dumpOutlet local idx cur=($1) line getOutlet "$1" [ "$state" -eq 0 ] && state="0 (Off)" || state="1 (on)" echo printf "Outlet name: %s\n" "${cur[i_outlet_name]}" printf "Alias(es): " for ((idx=i_aliases; idx < ${#cur[@]}; idx++)); do printf " %s" "${cur[idx]}" done echo printf "USB position: %s\n" "${cur[i_usbpos]}" printf "Bus/Device: %s\n" "${cur[i_busdev]}" printf "Gembird#: %s\n" "${cur[i_gemno]}" printf "Serial #: %s\n" "${cur[i_serial]}" printf "Number of outlets: %s\n" "${cur[i_max_outlet_no]}" printf "outlet #: %s\n" "${cur[i_outlet_no]}" printf "Section name: [ %s ]\n" "${cur[i_section]}" stat --printf "%A\n%a\n%U\n%u\n%G\n%g\n$'\x04'" /dev/bus/usb/"${cur[i_busdev]}" \ | ( IFS="$_nl" read -d $'\x04' access access_octal owner owner_id group group_id if [[ "$access_octal" =~ ^..[67]$ ]]; then printf "Access rights: %s (%s)\n" "World read and write permissions" "$access" else printf "Access rights: %s\n" "$access" printf " World: no write permission\n" if [[ "$access_octal" =~ ^.[67].$ ]]; then printf " Group: %s (read and write permissions)\n" "$group" elif ! [[ "$access_octal" =~ ^.[67].$ ]]; then printf " Group: %s (no write permission)\n" "$group" fi if [[ "$access_octal" =~ ^[67]..$ ]]; then printf " Owner: %s (read and write permissions)\n" "$owner" else printf " Owner: %s (no write permission)\n" "$owner" fi fi ) printf "current state: %s\n" "$state" } listOneOutlet(){ # Syntax: listOneOutlet "" local r state if [ "$opt_g" ]; then getOutlet "$1" [ "$state" -eq 1 ] exit elif [ "$opt_d" ]; then dumpOutlet "$outlet" else if [ -z "$opt_qq" ]; then # State getOutlet "$1" needColors if [ "$state" = "1" ]; then [ "$opt_n" ] || state="(On)" printf "%s" "$color_green_bg$color_bold_grey" else [ "$opt_n" ] || state="(Off)" printf "%s" "$color_red_bg$color_bold_grey" fi printf "%-5s" "$state" printf "%s " "$color_reset" fi set -- $1 # section [ -n "$opt_v" ] && printf "%-*s " "$l_section" "$7" # Name ( [ "$opt_qq" ] || [ -z "$opt_q" ] ) && printf "%s" "$8" # Aliases shift $(min 8 $#) ( [ -z "$opt_qq" ] && [ -z "$opt_q" ]) && printf " %s" "$*" # finale echo fi } listOutlets(){ local cur_sisdev=-1 for outlet in "${outlets[@]}"; do listOneOutlet "$outlet" done } ############### Jobs and the like getIntervalSpec(){ # Syntax: getIntervalSpec "" # interpret $1 as time interval (duration) starting from $cur_sec # (date in s since epoch, which must be defined). # sets global "cur_date" to a time strimg suitable for feeding to the "at" command. # sets global 'cur_sec' to reflect the new date (in secs since epoch) local days=0 hrs=0 min=0 target [ "$cur_sec" ] || cur_sec=$(date '+%s') || abort "Ooops: can't get current date/time" if ! [[ "$1" =~ [hmd:] ]]; then abort "'$1': need a unit specification (d[ays], h[our], m[in], ':')" elif ! [[ "$1" =~ $_n ]]; then abort "'$1': need a number in interval specification" elif [[ "$1" =~ ^$_s*(($_n)$_s*$_d)?$_s*(($_n)(($_s*$_h$_s*)|$_s|:))?(:?($_n)$_s*($_m)?)?$_s*$ ]]; then # declare -p BASH_REMATCH days="10#${BASH_REMATCH[2]:-0}" hrs="10#${BASH_REMATCH[6]:-0}" min="10#${BASH_REMATCH[13]:-0}" else abort "Can't interpret '$1' as a time interval" fi target=$(( ((days * 24 + hrs) * 60 + min) * 60)) : $((cur_sec += target + 30)) cur_date=$(date -d "1970-01-01 00:00:00 UTC + $cur_sec sec" '+%H:%M %Y-%m-%d') [ "$opt_v" ] && printf "time interval '%s' -> %d days %d:%d, target date: %s\n" \ "$1" "$((days))" "$((hrs))" "$((min))" "$cur_date" } getTimestampSpec(){ # Syntax: getIntervalSpec "" # interpret $1 as time stamp (date) # sets global "cur_date" to a time strimg suitable for feeding to the "at" command. # sets global 'cur_sec' to reflect the new date (in secs since epoch) local target target=$(date -d "$1" "+%s") || abort "Invalid date/time specification: '$1'" if [ "$target" -lt "$now" ]; then : $((target += 24 * 3600)) if [ "$target" -gt "$now" ]; then [ "$opt_v" ] && echo "Time in the past - using tomorrow's time" else abort "date in the past: '$1'" fi fi cur_sec="$target" if [ "$1" = "now" ]; then cur_date="now" else cur_date=$(date -d "1970-01-01 00:00:00 UTC + $target sec" '+%H:%M %Y-%m-%d') fi } getJobs(){ # Syntax: getJobs [] # returns on stdout "jobno: date - command" local srch err res if [ "$1" ]; then set -- $outlet srch="$8" else srch=".*" fi LC_ALL=C atq -q "$at_queue" \ | while read jobno time; do time="${time% $at_queue *}" # remove queue indicator and user name res=$( LC_ALL=C at -q S -c "$jobno" | sed -n '/^cd /,$'"{/^[^ ]*$my_name $srch /p}" [ "${PIPESTATUS[0]}" -ne 0 ] && abort "Error reading job $jobno" ) [ "$res" ] && printf "%s: %s - %s\n" "$jobno" "$time" "$res" done [ "${PIPESTATUS[0]}" -ne 0 ] && abort "Error reading at-queue" } listJobs(){ # Syntax: listJobs [] getJobs "$1" | sed 's/#.*$//' } num='([0-9]+)' fillPending_jobs(){ # Syntax: fillPending_jobs [] # fills the pending_jobs_* arrays local joblist idx joblist="$(getJobs "$1")" idx="${#pending_jobs_job[@]}" # add if there's already somthing inside while IFS= read line; do [ "$line" ] || break if [[ "$line" =~ ^$num:" "+.+" - ".*"$my_name "([^ ]+)" "*([01])" "*#" "*now=$num" "+at=$num ]]; then #declare -p BASH_REMATCH pending_jobs_job[idx]="${BASH_REMATCH[1]}" pending_jobs_date[idx]="${BASH_REMATCH[2]}" pending_jobs_device[idx]="${BASH_REMATCH[3]}" pending_jobs_state[idx]="${BASH_REMATCH[4]}" pending_jobs_now_sec[idx]="${BASH_REMATCH[5]}" pending_jobs_at_sec[idx]="${BASH_REMATCH[6]}" : $((idx++)) have_pending_jobs=$idx else printf "Unknown job spec: '%s'\n" "$line" fi done <&1 declare -p PIPESTATUS ) if ! [[ "$result" =~ "declare -a PIPESTATUS='([0]=\"0\" [1]=\"0\")" ]]; then echo "$result" abort "command '${at_cmd[*]}' failed." fi fi done } registerAtCmd(){ # Syntax: execAt "" "" "" "0|1" local date="$1" date_sec="$2" state="$4" cmd set -- $3 cmd="${my_path}${my_path:+/}$my_name $8 $state # now=$now at=$date_sec" idx=${#at_registered_dates[@]} at_registered_dates[idx]="$date" at_registered_cmds[idx]="$cmd" [ "$opt_q" ] || echo "scheduling: $date: ${cmd%#*}" } assembleAt(){ # Syntax: assembleAt "" "0|1" "" getTimestampSpec "$1" registerAtCmd "$cur_date" "$cur_sec" "$3" "$2" } assembleAfter(){ # Syntax: assembleAfter "" "0|1" "" getIntervalSpec "$1" registerAtCmd "$cur_date" "$cur_sec" "$3" "$2" } runInterpreter(){ # Syntax: doInterpret "$@" target_state="$(getState "$2")" now=$(date '+%s') || abort "Oops: can't get current date/time" fillPending_jobs "$outlet" if [ "$have_pending_jobs" ] && [ -z "$opt_a" ]; then ( summary="are $have_pending_jobs pending jobs" [ "$have_pending_jobs" -eq 1 ] && summary="is 1 pending job" set -- $outlet if [ "$opt_t" ]; then [ -z "$opt_a$opt_r" ] \ && printf "Note: there $summary for '$8'. You'll need to specify either -a or -r when you remove the -t (test) option.\n" else abort "There $summary for '$8'. Either choose '-r' to replace them or '-a' to add new jobs." fi ) fi shift 2 if [ "$1" = "-e" ]; then shift $v2Echo "$pname: Setting '$outlet' to $target_state" setOutlet "$outlet" "$target_state" rmLock $vEcho "$pname: Running '$*'" "$@" res=$? if [ "$res" -ne 0 ]; then printf "%s: %s exited with error code %d\n" "$pname" "$1" "$res" fi [ "$target_state" = 0 ] && target_state=1 || target_state=0 $v2Echo "$pname: Setting '$outlet' to $target_state" needLock setOutlet "$outlet" "$target_state" else while [ "$#" -gt 0 ]; do if [ -z "$cur_sec" ]; then # no previous action. Check if we have to switch now, case "$1" in for|until) assembleAt "now" "$target_state" "$outlet";; esac fi case "$1" in at) assembleAt "$2" "$target_state" "$outlet"; shift 2;; after) assembleAfter "$2" "$target_state" "$outlet"; shift 2;; until) assembleAt "$2" "$(( ! target_state))" "$outlet"; shift 2;; for) assembleAfter "$2" "$(( ! target_state))" "$outlet"; shift 2;; *) abort "Unknown element on command line: '$1'";; esac done # If we've made it here, we now can execute our 'at' commands: if [ "$opt_t" ]; then [ "$opt_q" ] || echo "Scheduled jobs not activated (-t)" else execAtCmds fi fi } ################ misc version(){ echo "\ $version (C) 2008 Heike C. Zimmerer This software is licensed under the GNU Public License (GPL), version 3." } makeWorldReadWritable(){ local bus_dev for bus_dev in "${gemdev_bus_dev[@]}"; do chmod a+rw "$dev_bus_usb/$bus_dev" || abort "Can't set permissions" done echo "$pname: Permissions done." } execMode(){ # Syntax: execMode "$@" # Execute special modes mode="$1" shift case "$mode" in C) makeWorldReadWritable ;; T) addTemplate 0;; m) # gemplug -m outlet outlet ... state args=("$@") while [ "$2" ]; do outs[${#outs[@]}]=$(findOutletByName "$1") shift done # don't exec anything in case of error for outlet in "${outs[@]}"; do setOutlet "$outlet" "$1" done ;; p) for jobno; do if atrm "$jobno"; then echo "job $jobno purged" else err=1 fi done [ "$err" ] && abort "Not all jobs could be removed." ;; l|d) [ "$#" -eq 0 ] && listOutlets for dev; do outlet=$(findOutletByName "$dev") listOneOutlet "$outlet" done ;; k) [ "$#" -lt 1 ] && abort "'-k': Not enough arguments" if [ "$1" = "ALL" ]; then fillPending_jobs else for dev; do outlet=$(findOutletByName "$dev") fillPending_jobs "$outlet" done fi killPending_jobs ;; j) [ "$#" -eq 0 ] && listJobs for dev; do outlet=$(findOutletByName "$dev") listJobs "$outlet" done ;; esac } doGetopts(){ while getopts vx-:lhrtnqjkidarcygfLCTWpXm argv; do case "$argv" in p|j|k|l|d|i|C|T|m) [ "$mode" ] && abort "'-$argv' and '-$mode' are mutually exclusive options" mode="$argv";; esac case "$argv" in d|p|f|g|t|n|l|m|j|k|a|r|c|i|y|C|T|W|X|L) eval opt_$argv=1;; x) set -x;; q) [ "$opt_q" ] && opt_qq=1; opt_q=1;; v) case $((++opt_v)) in 1) vEcho="echo";; 2) v2Echo="echo :+ "; vCmd=vCmd;; 3) v3Echo="echo :* ";; esac ;; -*) case "$OPTARG" in li*) version; echo "$LICENSE"; exit 0;; c*) doGetopts "C";; t*) doGetopts "T";; V*) echo "$time_stamp"; version; exit;; v*) version; exit;; h*) usage;; *) echo "unknown long option '--$OPTARG'"; exit 127;; esac ;; *) usage;; esac done } ###################### main pname=${0##*/} [ -t 1 ] && have_term=1 export HOME=${HOME:-/$default_HOME} unset IFS # get command line options vEcho=: v2Echo=: v3Echo=: cmdline=("$0" "$@") doGetopts "$@" shift $((OPTIND-1)) cmdargs=("$@") # Templates need to be written before initialization if [ "$mode" = 'T' ]; then addTemplate exit fi #### Initialize: get configuration (assemble it if required) # Make sure core variables are clean at this point: unset outlets l_section l_outlet ${!gemdev_*} ${!color_*} colors_TERM have_colors # get an exclusive lock for sispmctl and our files [ "$opt_L" ] || needLock 10 # Assemble core variables from scrath if required. If not, read them # in from saved state: initialize [ "$outlets" ] || . "$compiled_conf" # clean out old colors it $TERM has changed or none are required: if [ "$colors_TERM" != "$TERM" ] \ || [ "$opt_c" ] \ || [ -z "$have_term" ]; then unset ${!color_*} have_colors fi ### Now go do some useful work: if [ "$mode" ]; then # 'mode' commands differ in syntax, so they are recognized and # treated separately: execMode "$mode" "$@" else # standard syntax: [outlet [state [commands ...]]] [ "$#" -ge 1 ] && outlet=$(findOutletByName "$1") if [ "$opt_r" ]; then fillPending_jobs "$outlet" killPending_jobs unset ${!pending_jobs_*} have_pending_jobs fi case "$#" in 0) listOutlets;; 1) listOneOutlet "$outlet";; 2) setOutlet "$outlet" "$2";; *) runInterpreter "$@";; esac fi [ -n "$sispmctl_err" ] && echo "$pname: sispmctl errors." [ -n "$finale_furioso" ] && echo "$finale_furioso" exit 0 sispmctl-3.1/extras/gemplug/gemplug-completion.sh0000775000200200017500000000074411664771076021020 0ustar petepete# gemplug(1) completion # # Put this file into /etc/bash_completion.d/, or # manually add it to /etc/bash_completion or to your profile # in order to get your outlet names completed by bash. # _gemplug1(){ local item shopt_nocasematch shopt_nocasematch=$(shopt -p nocasematch) shopt -s nocasematch for item in $(gemplug -nqq); do [[ "$item" == "$2"* ]] && COMPREPLY[${#COMPREPLY[@]}]="$item" done $shopt_nocasematch } complete -F _gemplug1 gemplug sispmctl-3.1/extras/gemplug/gemplug.10000664000200200017500000005640411664771076016400 0ustar petepete.\" Title: gemplug .\" Author: Heike C. Zimmerer .\" Date: Time-stamp: <2008-04-29 21:59:40 hcz> .\" Manual: gemplug .\" Source: gemplug .\" .TH "GEMPLUG" "19" "April 2008" "gemplug" .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .SH "NAME" gemplug - control silver shield PM outlets .SH "SYNOPSIS" .HP \fBgemplug [-opts] []\fR .RS 4 lists available outlets along with their state .RE .HP \fBgemplug [-opts] off|0|on|1\fR .RS 4 Switch Gembird power outlets .RE .RE .HP \fBgemplug [-opts] off|0|on|1 at|after|until|for [at|after|until|for [...]]\fR .RS 4 Switch Gembird outlets at specified times .RE .RE .SH "DESCRIPTION" .PP Silver Shield PM power switches are USB controlled power outlets. They are referred to here as "Gembirds". .PP \fBgemplug\fR allows you to control your Gembirds in various ways, e.g., by accessing them by name, by scheduling and managing timed jobs, by allowing to couple switch actions with other commands (including other timed switch actions), and by handling multiple devices in a transparent manner. It delegates the task of actually accessing the hardware to \fBsispmctl(1)\fR. At the time of this writing, at least version 2.8 of sispmctl must be available before you can run gemplug successfully. .PP Timed jobs are handed over to the \fBat\fR command and rounded to the nearest minute. .PP For a quick start, scroll down to the section named "QUICK START". .SH "OPTIONS" Outlet names may always be abbreviated to the right (need to match only the beginning of a name) as long as the resulting substring is still unique. .SS "Job related" .PP gemplug's jobs are passed to the 'at' command for timed execution. You may examine and change the active jobs with the following commands. .PP \fB\-j [ [...]]\fR .RS 4 list pending jobs. You may add any number of outlet names for which pending jobs are to be listed. Without any name, all pending jobs are displayed. .RE .PP \fB-k [...]\fR .RS 4 kill pending jobs. You need to name at least one outlet. To kill all pending jobs for all outlets, use \fBALL\fR (in upper case) as the outlet name. .RE .PP \fB-p [ [...]]\fR .RS 4 purge individual pending jobs by job number. The job number is output in the first column (before the colon) when you list jobs by calling gemplug with the \fB\-j\fR option. .RE .PP \fB\-a\fR .RS 4 tells gemplug to add whatever actions are given on the rest of the command line to already pending jobs (if any). If there are any jobs already scheduled for an outlet, you must give either \fB\-r\fR or \fB\-a\fR when you enter new timed jobs for the same outlet. .RE .PP \fB\-r\fR .RS 4 tells gemplug to remove already pending jobs (if any) for the current action's outlet before executing the rest of the command line. If there are any jobs already scheduled for an outlet, you must give either \fB\-r\fR or \fB\-a\fR when you enter new timed jobs for the same outlet. When an outlet is named, but no action, this is roughly the same as \fB-k \fR except that the state of the outlet is printed too. .RE .PP .SS "Listing options and output control" \fB\-t\fR .RS 4 test mode: show what actions would have been taken or scheduled without actually doing any scheduling. Pending jobs are not removed even if you also specify \fB\-r\fR. This mode may come in handy in order to test the effect of date/time formats and other scheduling details. .RE .PP \fB\-l [ [...]]\fR .RS 4 list the states (on/off) of the outlets named on the rest of the command line. Without any name, lists all. Using -l without any or with exactly one argument is the same as calling gemplug without the \fB\-l\fR. .RE .PP \fB\-d [ [...]]\fR .RS 4 Dumps all configuration information gemplug has accumulated for the named outlets in formatted form. If no outlet is named, information about all outlets is written out. .RE .PP \fB\-c\fR .RS 4 Never use colors in output. Colors are otherwise used to display an outlet's state and to emphasize error messages when stdout is connected to a terminal with a known $TERM. .RE .PP \fB\-n\fR .RS 4 Replaces the "(on)" and "(off)" texts used to report outlet states by either a "1" or a "0" (without the quotes). For use (possibly in conjunction with \fB\-q\fR) in scripts. .RE .PP \fB\-q\fR .RS 4 Quiet operation. Removes all text from outlet state queries except for the raw results ("(off)", "(on)", "0", "1") and error messages. .RE .PP \fB\-g \fR .RS 4 Get outlet state. Report nothing, but set the program's exit code to 0 (true) if the outlet is powered on, else to 1 (false). .RE .PP \fB\-f\fR .RS 4 Force reconfiguration. Redisplays some non-fatal errors and warnings which usually are printed only once. Normally, they are not displayed again until gemplug's internal configuration data is rebuilt because of some hardware or configuration file change. .RE .PP \fB\-v\fR .RS 4 Do verbose reporting. This is mainly a debugging option for the configuration file parser. .RE .PP \fB\-v\fR .RS 4 Do more verbose reporting. Adds some informational messages. .RE .PP \fB\-v\fR .RS 4 Add even more verbose reporting. This is mainly a debugging option for the configuration file parser. .RE .PP \fB\-C\fR .RS 4 Executes a \fBchmod a+rw\fR command on all Gembird device nodes. You most probably will need root privileges (e.g, from sudo) to execute this successfully. Also note that the configuration files in your home directory might be out of reach if $HOME is changed to root's home. This is not a problem with plain sudo. .RE .PP \fB\-T\fR .RS 4 Writes out templates for not yet configured devices to stdout, giving the new devices and their outlets standard names while taking some care to avoid name clashes with already existing names. Use this to inspect the new lines before adding them with the \fB-TW\fR command below. .RE .PP \fB\-TW\fR .RS 4 Adds templates for not yet configured devices to your configuration file. If there's none, a new gemplugrc will be created including an initial comment describing its syntax. If there's already a configuration file on your system, it must be writable by you. If it resides in /etc/gemplug, chances are good that only root can execute this command successfully. Since we're appending at the end of the current file, no backup copy is done. .RE .PP .SS Misc options \fB\-x \fR .RS 4 Script debug. It will output an enormous amount of boring lines which are of no interest to the end user. Use this if asked to do so because of a bug report. .RE .PP \fB\-L, --license\fR .RS 4 Display license information. .RE .PP \fB\--version\fR .RS 4 Display version info. Don't forget to include the output of this command if you contact the maintainer. .RE .PP \fB\-h, --help\fR .RS 4 Display help screen. .RE .PP .SH "USAGE NOTES" .PP Except for some special options, a gemplug command line always looks like one of the following four lines: .SS "gemplug" .SS "gemplug " Query all outlets (first line) or the named one (second line). .SS "gemplug device off|0|on|1" Switch an outlet. .SS "gemplug device off|on ..." Switch an outlet at specified times. There are four keywords available to introduce timed actions: \fBat\fR, \fBafter\fR, \fBuntil\fR and \fBfor\fR. Each one of them must be followed by one argument describing the desired fixed time or a time interval. Note that this always must be exactly \fBone\fR argument. So either don't include white space in your time specification, or enclose it within single or double quotes to prevent the shell from splitting it up in to several smaller pieces. .PP There are two basic forms of a time specification: You may either wish to specify a \fBtime interval\fR with \fBafter\fR or \fBfor\fR, or you may specify a \fBfixed time\fR of some day using \fBat\fR and \fBuntil\fR. .TP 4 \fBinterval specification\fR .\" A time interval as required by \fBafter\fR and \fBfor\fR consists of days, hours and minutes in descending order, with at least one element marked as being d[ay], h[our], m[inute] or a ':' (separator between hours and minutes). Elements may be omitted as long as their order is preserved. Some examples of valid intervals: .PP .RS 4 .RS 4 "2 days 3 hours 5 minutes" "2d 03h 5 min" .RE .RS 4 "2d 3:05" 2d3h05 "2 3:05" .RE .RS 4 3h05 "3:05" "3h 5 minutes" 2h5min .RE .RS 4 "2days 3hours" 3d5h .RE .RS 4 "2days" .RE .RS 4 "5 min" 5m :05 .RE .RS 4 "2days 5min" "2days :05" 2d0:05 .RE .RE .PP .RS 4 As can be seen, nearly all combinations which make at least some sense are accepted. .PP Time intervals are cumulative: They get added to the last time encountered before on the same command line, be it the end of an interval or a fixed time. Failing that (if it is the first time specification on the line), the interval is added to the current date and time to yield the fixed time the event is to be scheduled at. .RE .TP 4 \fBfixed time-of-day specification\fR .\" The keywords \fBat\fR and \fBuntil\fR expect fixed time-of-day specifications. Any format which is acceptable by the GNU 'date -d' command may be used. Unfortunately, this doesn't include the ISO date format. Depending on the part of the world you live in, you might succeed or not with the kind of specification you're used to. A safe bet is to name the time of day first in hh:mm format, then (if needed) to add a space followed by the calendar date in a fairly free format, and finally to enclose the whole thing within single or double quotes, as in: .PP .RS 8 "10:45" .RE .RS 8 "10:45 Jun 3" .RE .RS 8 "10:45 2008-07-24" .RE .RS 8 "10:45 Friday" .RE .PP .RS 4 There's one exception to the GNU \fBdate -d\fR rule: if you specify a time of day, but no date, the date -d command always will return today's date and time even if that time lies in the past. In this case, gemplug will assume there's no time machine available which would allow it to modify past events and schedule instead for the same time, but tomorrow. .RE .PP The available syntax variations which allow you to schedule an action are as follows: .TP 4 \fBat \fR .\" Schedules the event described in the command line's first two non-option arguments to execute at the specified time. For the format of \fB\fR, see the paragraph "\fBfixed time-of-day specification\fR" above. .TP 4 \fBuntil \fR .\" Schedules the opposite action to the event described in the command line's first two non-option arguments to execute at the specified time. For the format of \fB\fR, see the paragraph "\fBfixed time-of-day specification\fR" above. If there's no preceding non-opposite action, gemplug will assume it is to be taken now and execute it. .TP 4 \fBafter \fR Schedules the event described in the command line's first two non-option arguments to execute after the specified time interval. For the format of \fB\fR, see the paragraph "\fBinterval specification"\fR above. .TP 4 \fBfor \fR Schedules the opposite action to the event described in the command line's first two non-option arguments to execute after the specified time interval. For the format of \fB\fR, see the paragraph "\fBinterval specifications\fR" above. If there's no preceding non-opposite action, gemplug will assume it is to be taken now and execute it. .PP While this may sound complex, it really isn't. Some examples: .PP .RS 4 \fBgemplug printer on for 30min\fR .RE .RS 4 \fBgemplug printer off at '19:00 Friday' for 2days .RE .RS 4 \fBgemplug Laptop-loader on after 2h for 12h\fR .RE .PP You can tell from reading the above commands what they'll do. .PP Just remember that the first two non-option command line arguments describe first the outlet and then the action to be taken on it. After those two follow the specifications when to do that using any combination of \fBat\fR, \fBafter\fR, \fBuntil\fR, and \fBfor\fR. Time or interval specifications must be enclosed in quotes if there are spaces inside. That's about all. .PP Timed actions will only be scheduled as a whole if the entire command line proves to be correct. Else a message will be printed stating that none of the preceding parts has been scheduled. .PP Note that you can test any combination you like with the \fB\-t\fR (test) option. You'll get a response stating what would have been executed without actually scheduling anything. This applies to all timed actions, including the pending ones if \fB\-r\fR is specified too. .SH "QUICK START" .PP If you're going to run gemplug for the first time, and if you already have installed sispmctl, and there are one or more Gembird devices connected, just start gemplug without any arguments (you may need to use sudo if you get permission errors). gemplug will suggest to create a template file for you. Follow the advice by calling gemplug with \fB\-TW\fR. It will create a new template and write it to the first position in its search path which is writable by you. .PP From now on, you can execute all the commands listed here. .PP gemplug will also suggest you to edit that file while displaying its path. You may want to do that now or later in order to give your devices and outlets more meaningful names and to remove either the "pos =" or "serial =" statements (see "SELECTING FROM MULTIPLE DEVIES" below). If you did use sudo, \fBchown(1)\fR that file to be owned by you before editing. .PP To solve permission problems, have a glance at the section "HELPER FILES" below. .PP .SH "HELPER FILES" .SS "udev rule" While the \fB-C\fR option has been included to allow you to make your Gembird devices world-writable without the need to know their exact \fB/dev/\fR path (and there may be distribution-dependent ways to achieve the same, e.g. an USB group), the preferred way is to use an udev rule for that. A sample file, \fB74-sispmctl.rules\fR, is included in the distribution, which accomplishes this task if copied over to the \fB/etc/udev/rules.d\fR directory. .PP In its default form, it makes all Gembird devices world writable when they are encountered during the boot process or when added later. .PP If you prefer to make your Gembirds only available to a subset of users, an alternative rule is provided. De-comment it, en-comment the original rule and follow the advice in the file's comment to create a new group and to add the users in question to it. .PP .SS "Bash completion" The file \fBgemplug-completion.sh\fR, when put into your /etc/bash_completion.d directory, allows bash to automagically complete outlet names. Two usage examples: To have all outlet names listed, type \fBgemplug \fR. Typing \fBgemplug t\fR will complete the unambigous part of all outlet names which start in 'T' or 't'. If more than one name matches, a second \fB\fR will display all of them. .SH "SELECTING FROM MULIPLE DEVICES" .PP gemplug was developed in the frist place since there was no way to access different Gembirds connected the same computer in a reliable way. .PP As of sispmctl 2.7 and up, you now have 2 choices: USB topological position or serial number. Each one has its advantages and drawbacks. .SS "USB position" If you use the "pos =" statement in your configuration file, devices are identified by the way their signal passes USB. You can exchange Gembird devices as long as their connections (this includes all outlet positions on any hubs and cables up to and including the USB plug on your system) are left unchanged, .PP The advantage is that you can easily exchange the actual device (not all Gembirds here prove to be totally stable, expecially if there is a lot of other traffic on the same hub not belonging to them). The drawback is that once you change some physical connection, you'll get two informational messages - the first one to state that some Gembird has disappeared and the second that there's a new device discovered for which no configuration is available. As both inidcate the USB position, you can to insert manually the new position by replacing the old one in the configuration file. If you change your cabling often, this may become tedious and you should start to think about using serial numbers instead. .SS "Serial numbers" Starting with sispmctl 2.7, the serial number of Gembird devices is reported back. If you identify your Gembirds by serial number, the same physical device will keep its name wherever it is plugged on to the USB. You cannot exchange Gembirds, but you can change your cabling as you like. NOTE: As of the time of this writing, this interface doesn't always yield stable serial numbers and is therefore not yet recommended. .SH "CONFIGURATION FILE SYNTAX" The configuration file's syntax will be written as an initial comment to the configuration file when a template is created from scratch (i.e., in the absence of a configuration file and \fBgemplug \-TW\fR) together with a syntactically correct template file ready to edit. .PP The syntax rules are repeated here for reference. .PP .SS Continuation lines A backslash immediately before end of line causes the next line to be appended (made part of the current line). The sequence \fB\\n\\\fR causes a newline to be inserted before the next line is appended. This is only really useful with pre-on, pre-off, post-on and post-off lines. .SS "Comments" \'#' and \':' at the start of a word (i.e. after white space or a newline) start a comment. All text up to the end of the line will be ignored. .SS "Case" All matching is done without regard to case (case-insensitive). .SS "Names (outlet and Gembird device identifiers)" Names can be made of any non-whitespace characters. They are allowed to include anything but the following: .RS 1 - They cannot start with a comment character ('#', ';') .RE .RS 1 - White space cannot be embedded as it is a delimiter, .RE .RS 1 - In device (=section) names '[' and ']' cannot be used (delimiters) .RE .SS "Indenting" Indenting is not mandatory; leading white space is always ignored. Use it as you like, In all places where white space is allowed/required, any amount can be used. .SS "Key elements" All the descriptions of the key elements below are preceded by an example line demonstrating their use. .PP .TP 4 \fB[ Gebird_name ]\fR .\" Starts a device section, giving the device and the section the name within the brackets. Any white space between brackets and device name is optional. .TP 4 \fBpos = 3.1\fR .\" Names the topological position of the device on the USB as reported by \fBgemplug -d \fR. .TP 4 \fBserial = 01:02:03:04:05\fR .\" Names the Gembird's serial number as reported by \fBgemplug -d \fR or \fBsispmctl -S\fR. .TP 4 \fB1 = Outlet-name [Alias ...]\fR .\" Number, '=', Name Aliases ... names the individual plug outlets. It can only be used if at least one of \fBpos\fR or \fBserial\fR are given before and in the same section. If both are given, they are required to match the same device. Outlet numbers (the numbers in the first column) count from number 1 upwards per device. .TP 4 \fBpre-on = \fR, also \fBpost-on\fR, \fBpre-off\fR, \fBpost-off\fR .\" The part after the equals sign is fed to \fB$SHELL -c\fR (or, if empty, \fB/bin/sh -c\fR) before resp. after switching on resp. off. This allows you to build timed sequences for powering up or shutdown. If you include gemplug commands there, beware of recursive loops before they eat up all your resources. Also always include the -L (no locking) option if you place a gemplug command there. .SH "FILES" .PP .TP 4 \fBgemplugrc\fR The user-editable configuration file. .\" .RE .TP 4 \fBcompiled_rc\fR .\" gemplug's internal representation of the user's and the hardware configuration. Automatically updated when gemplugrc is found to be newer or when hardware configuration changes. .TP 4 \fBlast_sispmctl_S\fR .\" The hardware configuration gemplug's \fBcomplied_rc\fR was built for is stored here. Every time the hardware configuration changes, the internal representation will be rebuilt and this file gets updated. .\" .RE .PP gemplug looks for the above files in the following places and in this order (first searched first, first match stops): .PP .RS 4 \fB$HOME/.config/gemplug/ .RE .RS 4 $HOME/.gemplug/ .RE .RS 4 /etc/gemplug/\fR .RE .PP gemplug needs a directory writable by the user for intermediate configuration storage. It fist tries the directory where it has found its \fBgemplugrc\fR configuration file. If the system administer decides to put gemplugrc into \fB/etc/gemplug/\fR, the user most probably will have no write access there, and the first parent-writable place along the above search path will be used to create an additional directory, \fBgemplug/\fR or \fB.gemplug/\fR, for the user's files. So gemplugrc and gemplug's intermediate files must not necessarily be placed in the same directory. .SH "EXIT CODE" Without the \fB-g\fR option, gemplug returns 0 on success or 143 on error. The \fB\-g\fR option returns either 0 (outlet active), 1 (outlet off), or 143 (error). .SH "CAVEATS" at Jobs are scheduled on a per user basis. This means that you can only see and handle your own jobs. You won't get informed if another user has scheduled actions for the same outlet and you cannot do anything about them. .PP You need a fairly recent Bash as its regexp syntax has been changed in 2007. You need GNU date and GNU stat to successfully run this program. .PP .SH "SECURITY" Anyone who has write access to gemplug's internal configuration file can execute any command they like within the context of the current user. This file is named \fBcompiled_rc\fR. The first one which is found along the search path will be taken. (When it is written, the fist writable parent directory along the search path is used to create gemplug's directory and to put it in there). This means that it is usually really not a good idea to give world write permissions to \fB/etc/gemplug/\fR. Make sure this directory and its contents are writable by root only if you decide to put a global gemplugrc there. .SH "EXAMPLES" Assuming your configuration file looks like that: .PP .RS 4 # sample configuration .PP [ Peripherals ] pos = 4-2.2 1 = Scanner 2 = Printer Laser 3 = DVB-T DVBT 4 = Backup1 Backup_1 B1 ICY ext_ATA .RE .PP the commands .TP 4 \fBgemplug scanner on\fR and .TP 4 \fBgemplug scanner 1\fR will switch your scanner on immediately .TP 4 \fBgemplug DVBT 1 for 30min\fR .\" activates the DVB receiver for 30 minutes (note there's no white space within the time specification, else it must be enclosed in quotes), and .TP 4 \fBgemplug Backup1 until tomorrow\fR will activate the external Backup for exactly 24 hours until the same time of day tomorrow. .PP See the \fBUSAGE\fR chapter for a few more examples. .SH BUGS There are, yes. Helpful hints are welcome at hcz@hczim.de. Include the magic word \fBgemplug\fR somewhere in your subject line. .PP sispmctl's output seems not always stable under any USB condition. Therefore, all calls are re-checked for a stable readout and/or a successful change of state. .SH "THANKS TO" \fBMondrian Nuessle\fR for writing \fBsispmctl\fR and maintaining it. \fBsispmctl\fR is the basic hardware interface gemplug relies on. .SH "HELP" A user forum can be found at http://sourceforge.net/projects/sispmctl . You can contact the author at hcz@hczim.de. Don't forget to include the output of \fBgemplug --version\fR. .SH "AUTHOR" (C)2008 by Heike C. Zimmerer. This program is licensed under the GNU Public License (GPL), version 3. .SH "SEE ALSO" \fBsispmctl(1)\fR, \fBdate(1)\fR sispmctl-3.1/extras/gemplug/install.sh0000775000200200017500000000166011664771076016655 0ustar petepete#!/bin/bash # install.sh # # Time-stamp: <2008-07-30 11:09:34 hcz> # # Script to install gemplug # $ 1 2 3 4 5 # source target mode create dir? always copy? set -- gemplug /usr/local/bin 755 n n \ gemplug.1 /usr/local/man/man1 644 y n \ 74-sispmctl.rules /etc/udev/rules.d 644 n n \ gemplug-completion.sh /etc/bash_completion.d 755 n n abort(){ echo "Installation aborted." exit 1 } cmdE(){ echo " $*" "$@" } while [ "$1" ]; do if [ ! -e "$2/$1" ] || [ "$2/$1" -ot "$1" ] || [ "$5" = "y" ]; then printf "installing %s into %s\n" "$1" "$2" [ "$4" = "y" ] && mkdir -p "$2" cmdE install -m "$3" -o root -g root "$1" "$2" || abort else echo "Skipping $1 (target not older)." fi shift 5 done echo "gemplug files done." sispmctl-3.1/src/web1/index.html0000664000200200017500000000446111664771076015326 0ustar petepeteHTTP/1.0 200 OK Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Content-Type: text/html Connection: close Vary: * sispmctl_http
 

Power Management

sispm_http logo
 
  Socket 1 OnOff  
  Socket 2 OnOff  
  Socket 3 OnOff  
  Socket 4 OnOff  
 
sispmctl-3.1/src/web1/logo.png0000664000200200017500000001674611664771076015010 0ustar petepeteHTTP/1.0 200 OK Server: sispm_http Date: Thu, 17 Aug 2006 10:00:31 +0200 Content-Type: image/png Connection: close ‰PNG  IHDRddpâ•TbKGDÿÿÿ ½§“ pHYs&&¢ï%ütIMEÕ 7ò‚twtEXtCommentCreated with The GIMPïd%nÕIDATxÚíytÕ•ðµt·ZÝZ-y•¼È–WŒ ¶±1Ä6`ã…Íì ™/Ëd¾†0_Nœ„É óyBæÀ$f3@°Å„ ð†m¼Ë–lËZ,Y¶v©×ꮪ7TËjµz•ZÆsð;窮j©«î¯î½ïÞ·”ÄùrVŠØ€È 7Ñ÷Ô/¡`  "gd½ïX6¾«íÀZ`W¢ë“¾d0À«Àº´ÿH !K–HeÉ:½ôEÍDnÔš\-?Àád?§~ÉLÆ‹(¬ ,ËE¸ä~JJH IÖs*I˜ ™€am¥È3õoJ^e—àhF}Ê¿ù’À°@áFßµnôI¶BŽ8Q‚?ó9æ\JÁöè(Ÿ{éöˆÆÇ?ãÿnk¤ÕÈWWÒ}ÏëTi5Dl@žCæFß5nôÉ6ëé6A€ˆÚ7­ÏRô91ø\Ja”=>Nv‹cW=É¿U·1 (^QAç¼±ìùÒš¬ˆ™[}׸ WØú5BD 8”¤ç’Áh £ìóRßAÕåOðËæ^‚€X7ƒÖ‡V±iÁcè_J b2ðkd¾æ[ç"\i³LM¢§>êxÜs}P’ùÿ“!äƒ>ª[ù|éã<Ñ $¸ùšºš¦=’ÚóœS@–þ çú‰53/,n­ëô_˜£„'Úe³LFI’pÊà`_ɧ›r›f( >ÝVWë)Ü÷Á©É}÷XÆ“HÜå[ë"<ÝÞo¦b,E›©>gÌ„%‚Ñ !WûÙs’O—>Îo‚:†"Ãó¨æV>•H¥[ç€SŸû7Òçm^¼tt󪛶"ß®]Rh×Ü®*z_±ƒ$C8x扶ÔÁª†)ÑpÈ›®p„—úÖºͶvÐQ-¥3ûqZQ±ç‰T>@® ²¹÷Vü/3G…;æSóô.¶g"“/ÈÏ-º`儺»J;Çäú& Ešœãf¨‰0f—ÁØ™`w‚-l‘­$Y@ÂA¬ÚzÚëáô18ý„ñ¯ÎE»À‘´5• JtË*Y3W®ö#7h¼}„ë~ßÓm‡;çsà‰ìÎT6g È´¼ïÊ¿\üÞMsŠÚ0ÞåY¤ÈB"¿¦.…i—BÅp¥é bÕ¾»þªŸÃu.Ú<Ç`¡f³™+@>èC:/îç÷_}M€(tÂ×/bç¿oåÐPä4â@—ü¥ôÈ¢×}ÿ—wŠ3—ÃEëaÒ塸ìÁ»{ƒšßã_™‹v‘£ßöhA"ÓkªLPöy§ÃÆ“;ùõw6²0K]ðlýÙ'ª¼FÈ Ëg-¾ltÓcenÏBd f_K¿Ž(š÷ ¤t¯LD”–HUOAÍ ®t\cËTøI´e@1Êf[8üÈfÿá;ìĸ<Ä·òñ?DÃpd6"@~2ï+E·O9ôÓŠüîoÚUC¥x<¬ºÆÍ ¡Ã– ä¸W'â®~ŽüÀ 'ÁE9gžà„¦)35H;Âås/z§|pýôcæÄBŒo/ä£7Ñ<\ÙeÈËËg\º|\ãïKœÉÈ@Å"¸êPíý¿&Å"­¶¡8ö*}‰ÀWœ—äœ6ÈYÇ~ ¿2È‘k&Ê./Z·áýþ›üüñÏ8˜SGþî%lúÁÛ´fC~Y‹CÆ:ÿVzyÅ«¿`Tíÿϱév`êX~7º%ô$P"½GD¨{ ޽Bà²( Œ²ûb ÉLìIfŒVÅÄRÀDÞåÁßmvûU}a?M€˜UŠvïe¼ûteKŽYrç”ëÌ}þ©ÙÅíwZT t2,¹Â~qaôCÒÕÙÆMpl#ÁKs.CŠyˆ´c#òØï‰¦ª/cÛÓc¶}õyç­€9oVðöíÏãɦ…6{g®ÌÿÛYŸ¼TQÐ}õŠ oAè10b¡H1ø—¼y3Ô¾Npq˃}Œ9Ðl Òˆ¨hÅ/µâIJÉtþd%ï^ù$ÚH4ˆ† 䯧¯výݬm¯—¹= ­^² (™º?rç$¯Ñ~#ÑV8½êÞC[à °"Œè<Ô0óUVÆÖÇÉÁÿÛ˜ûÙ¡V¿«+iýÇ•¼¿äW„G*TëËn±}ÖÏ—»{—žÑŒèj³Y@‘ž¸¨*ÇÑ36HSÚAÝGh9ð_™›0VŒÖ¸}qüG¬Võelšá£í°¢ xÛÉQ®¶â±¾7^ÇÓÁ`Ëš½û®ýÄ…£Zï>£Ñ¢•Ë`teJ2m黺ŽcP¿mžÿªÜ¸±I¶òUr½†|ØÏÑFؼÛú®,`^‘>Þ3mùÍ»j¶tfCÉô6]5ù®Å¥'’¤¢¡ØíW "Ü_‰ÙÆ«±ßé<ÛÐæÚñ_ÿñ‰jYIÑf*‘ÉŠþµ¯ "רªƒ­û­cª KGÜ¡”ÚüW*âòg7wÕÎ ¿^2wÖÕãë7:l†cŒh ºŠÊ@Ò㠚Ĝ# ] pb¡Ù6ük\)aÄ=ÌP¤±‡rØJŸï9 ;G¬® ËÇA…Ýú©\Y/š˜Ó;㱆{_„Í_<Ën²ÿÍŒÝï–8ˆ5Y’a ×™%èPr0Ñ0zNBÓ>B3møÖ¹Ö¸ZHø"¾ƒWöû‘5¶WÃþ:ë§ \9ÊíƒÍQ¶ÀÌÕ£êÚžjòìüÂüfIÏ}³Š:îŠ "ž¶„ºÁîUM® ±ÕsššaÃwËúßñŠ™ä©Od¦¢µÅe·©9ħ‡ ºÉú)§ «&ÀXÛàˆŠvYž²ø·vžð~a@þuþâòµŽ¿èP û •’ Ê@°Ã¢(ñ…ßFŠl½p²–p¥ŠïZwb ZS’™Ä„Eû]`ÛáC´„ùð?mõ{¹l°ºF© JÅôqHFÎh»oücW¾0 ÿ±Ðÿô¸\ßü” âw[WÕ~R-ñ÷@Ë ÂSU¼×'‘È‘›i8r$M`ÛîEoÕy¿ š:,ùX3 Õ±P*Úœ‹ó*·üáTGÝYCþ{Ѽù“]nÐdMÔl•Ô`˜p€-b˜ûþ‡ 48ÝAxJf02ÎWMl[¼„: Þ=m=V}±V•Kô¨{1ãìK Ê¦|Qþé² $ewÝŠÑØSN?$}\„@k³ªááÓ^ ÆdßzWjb¾Jò™Ø>õè0x³ Ú¼–fŒvÁš Ë\¥u‘ZžÓ»ìsg­8«@~yñ‚å®Þӆޯˆè½ ÷@À mô‰ ¾õ.„"¥„1”|•Ôk`ûă·ÃàÃд`ŒÏ‡Õ£&¹·÷-K‚E'ï?«@V©»Ç¡j:OLÚÓ·6¡3Œ^®â½ÑPÓ€‘$K; uNî4°}ì¡»Ëäõð„,‹`UØ”$Â'•–xV=ZyÉì³âCÖ½-§Äñúm™\`J?ÓwܺAŸ â½É°¥‘ÁI¦ ’…r«Ž}«3$¨í‚I…Öwrmpa©•ÁLRŸ «ª§MéêQÇïâ(÷8{*w­å” ‚@fOÑ j= WñÞœ> I¤ÎÒFŸ“[ÂØ·ùÀÈ2,—ÅÇ8 T[¿Yb Ü93÷îUûÿËQ ÓÝ·b¨PúZ*½ À°§™ÛŒçõòEΉÑ6´ë Ó_•ð7£>È'Cȇýàj¿u_cì¾òŸLùtùW«øpÄ|È¢ÿcÏ·kW&L‹§‚DÍècŒ‚÷V7‘> )^'R¶¦¤avå#ä*¿5!­:’Šºüy®Öµ#j²¾3eÏÅ£ìÂdݪ)ADÏ´ž(£TÁsk^ú0â5sEòN¨„ƒÄ¤(û¼Ð¡S}:OöçÀÊ]0!r¯yJhåˆY\|reJéì÷ÁZûÚÔ:¨X­ªÈ6zÿÌV"ùˆ‘X§ž¤6R²×‹Ök²{?tuXÿSfåĨÿYd ÎùöØu%Ožz«}D€Ø´eÃêê’¢žîP¿s?Ì`L€2Š„P¬­Y¤Zœ;(_ÏL¥šF÷VšC(‡üt÷>ßZÀj*;mpQ˜‘ˆ>Rr•°íÆ’šÅOžâÍb—Œ™Yéo”€Üù®½ ðçc *`WÀ¦Zõ̾lÅ6TE`“6ÙJøM±ƒ™/^îêO¿§áð31rµ•Žo: j@Öm;a~8Ìšèè½FÈÊÒ¯äÙ^Îf#±¿ë·^;BY±òH’ ’õ¹o¿¯ÊPdƒ[Š,uyà”ÏÄR¢¡ g"â¹<³lD€Ú‚c‡-|‘ºOa@5ãÄA+3sü׺!GŽÛ›4垬˜ ×Xþ¢±Ô÷û‹QN˜_޾4‰HrÏýãü\#:$£ -Á&x&0bÁDbªÁt)ø¯s#œr´I¼ÁÕ)ah&Ê.4h8û¬±x20¥•‚CŠ/ø¸ÿ[€CÒªôC{Ö¨’™;¬§Ÿ ¯€c`ºûaH)¢sâiK¡n÷jÓÙZ õ!Y ÇÙ…‘¤c2qd§„Õeù'гn²d„#«Ot¯[*SN€™¯à»Þ 9­<Ö„%|úšBȇ}tyag#hZ$û«Â‚R(£LTº5"“r{onÖ˜B ëéÏÄOHQÇC@ ˜ ¾,)³»éæ«ÌH|qB£¡ ´ôû‹’\¸¨"Ò’Šw¿iluS¦6XèË:Ý”ýCz¬àå@¢ÓÙm`*øop#òÀ)eÃÉWi&Ê^¢Kgßi¨ï9ò7S aV!È–ÔJõöðfOygÖ µ+#s$g ±Çˆ<•`)ø×[‰ÇMÛa䫤n+¾úLv6C—ßòªsÇ@Yn”‰2‡fªú¶!S À¿„³¤3”s*+¦(Õ¼>½`+øÖçYM›D£ 3ÌWÉMÖÀéN?ìh-dÁȵÁÂ1P &€‘h?E‚¬ œÔÊ:ä)9‘²u”i36^hØê94Š|7æAŽ”Xø™ä«L«üÈU~ê»`s#háÈ´•\¸¼ l1×%†F7å†òê©™Ç<º=œô"Ì4k¢ïꀌßÍyˆ(qsRéæ«4e§Nhì= {OYñ…$ ¢ÄÉ®W RÐT÷H¤¾¥û¯7ì>™g MJè 31_±YaaiˆQªà½)ìRÿý$‚O90Ê_|Öbù °sÇB¹;fÐB²‡+-‰¶†2•ƒ& ÉW˜ z £Š1ZÁ{³#‘_È$_%Ÿ°–FêðÁŽËDI€KEãã˜(s`À© ~N¦ªÇíSï 9>ÉŠÉŠõDúÔo‰tãf0¾*®/1"þ⟺.ØÜ! Ô _™#Ñ3À“A‹ãÕíÚ‹³vŒ˜†lîœøÁüüÖäZ‘®‰êîZ0<·DÌT¢ækºùª@|±û4Ô÷Dú/L+†Y%V¼1¨1‘ J*­I¦[wì}¾óµîuòpý’½mZnGÆN;Þ K€Œ± žÛ¢š¶iޝЗ¯’;uÔm‚í:7@}—%|X0æôÁ0âÀHJ`zuGV†%Ò|Ìè Ûß²©2¢‚Æ\ÐÇ©xn˳Æae8¾*6_%×k(;<´w™|x¼?Øs©ð•‰PæŠb8PR€¶{Ç¿1¢@xF?›v36ÞÍÊ@~d„âmÖ ¸a¯ÒAÙçC©òSÛŸÖEâ £°¼<*Ø3FJ0-šûØ·®Ù6â@6Ô-ÝÔ¦å¶d4öµ¯*@QFß ¸aŒ¯’ü&¶-h ±« ö6ƒ0-³TYKƃ80FJL =œû,ü‹q ;{£·i¹Ïed¢ŒHÿô²(Ã_%·ëØ>î%ئóçc‘þ Óú™…caNq$9]õ³ÅMWŒ·z¦>—Í I§#¼Ñ6í1¿®ji ·cc`¤šá”$_¥Ôjضxhïlª†.¥n–•E%“HŠ‘9”¦PÞŸî?¹­ö¬ùaíö†¦@þóI/´ïXP†5ßãÖ¨ÔI&g&ÌWéu—uŸŸã§aóQ0Â`—aœ V”GÅñòYRœ C*(ffPtC67{Ë7d{¨TÊA¶¿¨\Xy÷„½U96Ý6`™èm05ã–0b—½H¶¢›d€ä5±oõ!uéٻˠ#‰†'»Uë‚…ïTTu¯=ë@_2êé™îŽo Z$@Æ'S ú¤8S Ò]×0 ŠÒB Z»¥9Rü'¿o±­iäu>¹6ðeu~Hav3€Òý]Ó/ûjÃá_'}¥ô¾òÕ­xŒB`VÆ-1“oFr™ÖD%$¬U¦›4+½ß5Ÿ#݉™B;"Ÿ«ü%_PÝþ=F ¤5OýãžFÿÚâ Ý“=×AXÌ}rb çŒ'™Oo€”ÅÈuÊ>F‡Nstœ°]tjÖ°Ôµôk2(IZ`]áœÖÿh[pÓÿÈ,B“öÒ¼7í]StüŠE›Dp!˜%2¾Õ.K¸! Gžl$S äè5FÒ]§$¥Š·„P÷øàt˜“ÍPu::À´ª$`|&‚‘Ó”ÄßøïÞÝ´o#T2Z/ëß*•sî¾=ù C£2ZGHd 3_&¸ÆJ¡ g½u©KG® õè´w@íqðGú@daMužì‚R5fÞº9t(Uþ’§/¨iÿ#X2^ÀìóÆÞ>Woý½M5å>' >kI%2z]‘­}» ^²K"pM"OÖk…$¿‰\ãGj ãñÀÑZèîîa“#³›QÙÞ¡äáb¶§4×Á:}ù¥¿êx×{NØ:o†Kó›ïG=aØÖy1Yßœ<Ùjð( ¬¼&”I×¹1G©é¯ök®Â¹6€Ü¨ Bm-œ:ÕßÈR°b”IN°'J•Š'lïy£wÚÒ;b„Ë€Œ±Ý#½ÁóOÍ*hûFcØšV`JV UD$$d(œ ã'Bàj7Æx[ZMàAë­› 7‘Ñ‚úhl°rY}0JœPáW‚îÕ¸@DÁ® þ°-ø¾gòšõ G?æ,”!/5~Ó¨›ìOúè•i¹]ׯ]±a0‚Ë]èSíCZo]:B9@øMš›,­i‘7Ýyv˜æ†"9q_wJ IRAš¡„ÿì™xûšúº?r–Š2Ô?<8l^ÿ§%îæEJpÚ€“å@hKœè3©×¯Šmövë(û|È m-‚½»ád˜z¿ÃžžÓÖ; ØHg¤‘½jh‡oü·VÖ5¼ÈY,Êpþøh°*ÜZýÒlgÇäRÕ!ã¬ø$taá‹É…{Îg¢ò#×ð¶šìßÇB82(Ú&Ã7ÌqA>Q¾ÆdèýüqŽût›ÿÏÞI7¯ª«…³\”áþƒƒc»çö×.qµäï_"]ŒžaG»,7îcqµE(5A”>Bm‡@Õ~k± >+8Á æA‰i=¥ã°ÌAõ†훼“×ÝÐpìC¾€’µ×U˜XdšÒ'b²š¸:ò^¯$IDk©=Pê4”# ¿àøK#LãLèBI.Tº /¶Õ•锈x¦-d£–¿õ=Ó¿vï©]|A%+oG˜¼É8%'°Ê5`Ò¢ñUJs¥Ê^“õPsBAμ,ßÓÝ–F ˜p)2„’̹GöÆl–>òÐé˼ÑóJˆ/°HY€1Øb*S|ëû‡ø$JÊ:êþr»NÛ)8¼z»û[N96¨Ìƒ JŠÔI:óWÌÔZÒvÜì+»ç¶Õqu˜0 €·…Kžâ¿Î=`ˆOìÀÙk¢î 4†ðtáÝÐÚyQ³d-$0Ùm-\¬&K*Šì˜-¯n÷VKþéá¶KÿýžW4Α" Fð¶pH+üëó0Š”ø¸&° ¢Ñм‚ê=Ðx´ÿ‡eÊÜ0Ý9fW$†f¶zu»§1”ÿÄÆžþ¸mK çXQ‡C~‡*­ð¯sc+ƒ‡î ÖhØö0"´­‰?=¼Ñ]u©b¬«p„.rʆZš 3s#k‡D/y$¥‚$ ܽÛÎ=Õv?ñ|ÏœÇ~ÚþQ»µÖÒ¹W¤!ÀøO$¾ç_k½;6'¥4„±@ê1Ä‘6>¹ï-ž{«†¶>1]:Ú]ôý±öÉK„¾~¬êo“L)-jH¯áðµ…¯ÔJŸ}¸íÒ÷·ž sŽ—¡yøÇÀ•¹„g9‚h3°ïð£´è´x¨úÙ'üöç[μdÑ,+@Z9•¦ï-¦jñ¯üh̲©ëòkWŒ¶ùV¸äð%J`‚*›CÒ¯iwéŽý^ÓþAu°dÓïºçlÕóª‡ÿEEÊÆÝÀÁ%N´…9g|†ì1±ï `;¢7ÈÉgvó»{^ç3UA\QAÇ7°ÿ†géIü ÷sgÑÁ kÜǧLwtÎ.PB•Šd(ˆ<›dŒ–-ë¦Bj7„Ün É4ÕÖÓºkßÞàèºWzgÝæÆÇÿâ"eãFà¥Ð…%°<…kÇî ¶ý¡ ð¼s”—þò%Þë LE‚+§â¿é|o#-œ/Ù"6° x7<Ížã_ëB2Á^¥áØÄô™á'xûÛ¯òê¡V|}~bQúõ³8ü£+8&=p^ÐYbn`®Ÿèej¡o½õ„Žss¹Ã5ílûÁÛ<ÿúaNõ}½²ÖTrôž¥®|ý¼ˆ³ÄÜÀd ¶¥ÊøÀ¹ä|DmsÚË‘Ÿ}³næhŸFŒÍƒ+*8ñÝKØ¿ü¿ œm–ˆ ”›…Mš¡—«Øê 8þV ¯]÷ ;LapÛaù:¾~1{n>{¯ =d ð!pIäPðÏ÷¾ÁÞ_le4 $ sùü×Ïbï}oÿ-ÉçK‚H]lÀ¼þxè¯_cÊ“»¨Äüq„¯ÉÁ‡Vqä¼Ãá"60Jl AlàesÓYn;_›RÄíµˆùÿÛyI](gÖ}úÑL™QÊ7Ïá²÷¾™eìΗ!–§ofÂ_-bõ3·2ê¼4βÿÆ—Âùr¾œ/çNùÚ¢|S‡EQ¡IEND®B`‚ sispmctl-3.1/src/web1/off1.html0000664000200200017500000000023011664771076015040 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$off(1)?index.html:index.html$$ Connection: close sispmctl-3.1/src/web1/off2.html0000664000200200017500000000022711664771076015047 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$off(2)?index.html:index.html$$ Connection: close sispmctl-3.1/src/web1/off3.html0000664000200200017500000000022611664771076015047 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$off(3)?index.html:index.html$$ Connection: close sispmctl-3.1/src/web1/off4.html0000664000200200017500000000022711664771076015051 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$off(4)?index.html:index.html$$ Connection: close sispmctl-3.1/src/web1/on1.html0000664000200200017500000000022611664771076014707 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$on(1)?index.html:index.html$$ Connection: close sispmctl-3.1/src/web1/on2.html0000664000200200017500000000022611664771076014710 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$on(2)?index.html:index.html$$ Connection: close sispmctl-3.1/src/web1/on3.html0000664000200200017500000000022611664771076014711 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$on(3)?index.html:index.html$$ Connection: close sispmctl-3.1/src/web1/on4.html0000664000200200017500000000022711664771076014713 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$on(4)?index.html:index.html$$ Connection: close sispmctl-3.1/src/web1/status0.png0000664000200200017500000000064511664771076015442 0ustar petepeteHTTP/1.0 200 OK Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Content-Type: image/png Connection: close ‰PNG  IHDRdo3MÔ pHYs  šœtIMEÕ (•àdtEXtCommentCreated with The GIMPïd%n¦IDATXÃí–Á€ DÃñÿ™v0 ¢i2ÙK 6às…x Y•¢våãÉA˜*¢ÙÈ"*I{“5~[.ø½ŒK/áY¥øRyÍ…WzÄìÛÁŒÇG*XªÓX¿Ž¡¾jqãÓR¿ôX=²! qÍûø§=‹ùtÜnーr&ƒ÷z'JqGF·÷·¾åº´œ_T>Mvü?'x÷ŽQaðC´¤{G1†mžIEND®B`‚ sispmctl-3.1/src/web1/status1.png0000664000200200017500000000063311664771076015440 0ustar petepeteHTTP/1.0 200 OK Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Content-Type: image/png Connection: close ‰PNG  IHDRdo3MÔ pHYs  šœtIMEÕ ( ùx2tEXtCommentCreated with The GIMPïd%nœIDATXÃí˜A À “â[ë›úZ{ˆ´’Š4e+»Áƒ‰›Q¢º¡µÑ‚q%!`ž²èÈÊ¢–(YuÂ,Ç£C Žƒ)””ÖˆËi± Kœ³N7.4Y–q%â¾·îü4qu?î:wVÔ4kF6¥Ÿ6)¢¶m®¥nwUïgþ­¸R{²ƒ_¡ƒ‡’ò׿!:P\:YR±£ IEND®B`‚ sispmctl-3.1/src/web1/style.css0000664000200200017500000000134011664771076015174 0ustar petepeteHTTP/1.0 200 OK Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Content-Type: text/css Connection: close body { font-family:Verdana,Helvetica,sans-serif; font-size:12px; font-style:normal; color:#FFFFFF; background-color:#222222; margin:0px; } a:visited, a:link, a:active { text-decoration:none; color:#9DC9FF; } a img { border:0px solid #000000; } table { font:inherit; border:3px solid #555555; background-color:#666666; } th { border:1px solid #555555; background-color:#555555; font-size:18px; text-align:center; } td { border:0px solid #555555; background-color:#666666; font-size:24px; padding:8px; } td.o1, td.o3 { background-color:#BBBBBB; } td.o2, td.o4 { background-color:#999999; } sispmctl-3.1/src/web2/index.html0000664000200200017500000000322211664771076015321 0ustar petepeteHTTP/1.0 200 OK Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Content-Type: text/html Connection: close Vary: * sispmctl_http

Power
Management

 
ON:on1.html">OFF$$ Socket 1
ON:on2.html">OFF$$ Socket 2
ON:on3.html">OFF$$ Socket 3
ON:on4.html">OFF$$ Socket 4
 
sispmctl-3.1/src/web2/logo.png0000664000200200017500000001674611664771076015011 0ustar petepeteHTTP/1.0 200 OK Server: sispm_http Date: Thu, 17 Aug 2006 10:00:31 +0200 Content-Type: image/png Connection: close ‰PNG  IHDRddpâ•TbKGDÿÿÿ ½§“ pHYs&&¢ï%ütIMEÕ 7ò‚twtEXtCommentCreated with The GIMPïd%nÕIDATxÚíytÕ•ðµt·ZÝZ-y•¼È–WŒ ¶±1Ä6`ã…Íì ™/Ëd¾†0_Nœ„É óyBæÀ$f3@°Å„ ð†m¼Ë–lËZ,Y¶v©×ꮪ7TËjµz•ZÆsð;窮j©«î¯î½ïÞ·”ÄùrVŠØ€È 7Ñ÷Ô/¡`  "gd½ïX6¾«íÀZ`W¢ë“¾d0À«Àº´ÿH !K–HeÉ:½ôEÍDnÔš\-?Àád?§~ÉLÆ‹(¬ ,ËE¸ä~JJH IÖs*I˜ ™€am¥È3õoJ^e—àhF}Ê¿ù’À°@áFßµnôI¶BŽ8Q‚?ó9æ\JÁöè(Ÿ{éöˆÆÇ?ãÿnk¤ÕÈWWÒ}ÏëTi5Dl@žCæFß5nôÉ6ëé6A€ˆÚ7­ÏRô91ø\Ja”=>Nv‹cW=É¿U·1 (^QAç¼±ìùÒš¬ˆ™[}׸ WØú5BD 8”¤ç’Áh £ìóRßAÕåOðËæ^‚€X7ƒÖ‡V±iÁcè_J b2ðkd¾æ[ç"\i³LM¢§>êxÜs}P’ùÿ“!äƒ>ª[ù|éã<Ñ $¸ùšºš¦=’ÚóœS@–þ çú‰53/,n­ëô_˜£„'Úe³LFI’pÊà`_ɧ›r›f( >ÝVWë)Ü÷Á©É}÷XÆ“HÜå[ë"<ÝÞo¦b,E›©>gÌ„%‚Ñ !WûÙs’O—>Îo‚:†"Ãó¨æV>•H¥[ç€SŸû7Òçm^¼tt󪛶"ß®]Rh×Ü®*z_±ƒ$C8x扶ÔÁª†)ÑpÈ›®p„—úÖºͶvÐQ-¥3ûqZQ±ç‰T>@® ²¹÷Vü/3G…;æSóô.¶g"“/ÈÏ-º`儺»J;Çäú& Ešœãf¨‰0f—ÁØ™`w‚-l‘­$Y@ÂA¬ÚzÚëáô18ý„ñ¯ÎE»À‘´5• JtË*Y3W®ö#7h¼}„ë~ßÓm‡;çsà‰ìÎT6g È´¼ïÊ¿\üÞMsŠÚ0ÞåY¤ÈB"¿¦.…i—BÅp¥é bÕ¾»þªŸÃu.Ú<Ç`¡f³™+@>èC:/îç÷_}M€(tÂ×/bç¿oåÐPä4â@—ü¥ôÈ¢×}ÿ—wŠ3—ÃEëaÒ塸ìÁ»{ƒšßã_™‹v‘£ßöhA"ÓkªLPöy§ÃÆ“;ùõw6²0K]ðlýÙ'ª¼FÈ Ëg-¾ltÓcenÏBd f_K¿Ž(š÷ ¤t¯LD”–HUOAÍ ®t\cËTøI´e@1Êf[8üÈfÿá;ìĸ<Ä·òñ?DÃpd6"@~2ï+E·O9ôÓŠüîoÚUC¥x<¬ºÆÍ ¡Ã– ä¸W'â®~ŽüÀ 'ÁE9gžà„¦)35H;Âås/z§|pýôcæÄBŒo/ä£7Ñ<\ÙeÈËËg\º|\ãïKœÉÈ@Å"¸êPíý¿&Å"­¶¡8ö*}‰ÀWœ—äœ6ÈYÇ~ ¿2È‘k&Ê./Z·áýþ›üüñÏ8˜SGþî%lúÁÛ´fC~Y‹CÆ:ÿVzyÅ«¿`Tíÿϱév`êX~7º%ô$P"½GD¨{ ޽Bà²( Œ²ûb ÉLìIfŒVÅÄRÀDÞåÁßmvûU}a?M€˜UŠvïe¼ûteKŽYrç”ëÌ}þ©ÙÅíwZT t2,¹Â~qaôCÒÕÙÆMpl#ÁKs.CŠyˆ´c#òØï‰¦ª/cÛÓc¶}õyç­€9oVðöíÏãɦ…6{g®ÌÿÛYŸ¼TQÐ}õŠ oAè10b¡H1ø—¼y3Ô¾Npq˃}Œ9Ðl Òˆ¨hÅ/µâIJÉtþd%ï^ù$ÚH4ˆ† 䯧¯výݬm¯—¹= ­^² (™º?rç$¯Ñ~#ÑV8½êÞC[à °"Œè<Ô0óUVÆÖÇÉÁÿÛ˜ûÙ¡V¿«+iýÇ•¼¿äW„G*TëËn±}ÖÏ—»{—žÑŒèj³Y@‘ž¸¨*ÇÑ36HSÚAÝGh9ð_™›0VŒÖ¸}qüG¬Võelšá£í°¢ xÛÉQ®¶â±¾7^ÇÓÁ`Ëš½û®ýÄ…£Zï>£Ñ¢•Ë`teJ2m黺ŽcP¿mžÿªÜ¸±I¶òUr½†|ØÏÑFؼÛú®,`^‘>Þ3mùÍ»j¶tfCÉô6]5ù®Å¥'’¤¢¡ØíW "Ü_‰ÙÆ«±ßé<ÛÐæÚñ_ÿñ‰jYIÑf*‘ÉŠþµ¯ "רªƒ­û­cª KGÜ¡”ÚüW*âòg7wÕÎ ¿^2wÖÕãë7:l†cŒh ºŠÊ@Ò㠚Ĝ# ] pb¡Ù6ük\)aÄ=ÌP¤±‡rØJŸï9 ;G¬® ËÇA…Ýú©\Y/š˜Ó;㱆{_„Í_<Ën²ÿÍŒÝï–8ˆ5Y’a ×™%èPr0Ñ0zNBÓ>B3møÖ¹Ö¸ZHø"¾ƒWöû‘5¶WÃþ:ë§ \9ÊíƒÍQ¶ÀÌÕ£êÚžjòìüÂüfIÏ}³Š:îŠ "ž¶„ºÁîUM® ±ÕsššaÃwËúßñŠ™ä©Od¦¢µÅe·©9ħ‡ ºÉú)§ «&ÀXÛàˆŠvYž²ø·vžð~a@þuþâòµŽ¿èP û •’ Ê@°Ã¢(ñ…ßFŠl½p²–p¥ŠïZwb ZS’™Ä„Eû]`ÛáC´„ùð?mõ{¹l°ºF© JÅôqHFÎh»oücW¾0 ÿ±Ðÿô¸\ßü” âw[WÕ~R-ñ÷@Ë ÂSU¼×'‘È‘›i8r$M`ÛîEoÕy¿ š:,ùX3 Õ±P*Úœ‹ó*·üáTGÝYCþ{Ѽù“]nÐdMÔl•Ô`˜p€-b˜ûþ‡ 48ÝAxJf02ÎWMl[¼„: Þ=m=V}±V•Kô¨{1ãìK Ê¦|Qþé² $ewÝŠÑØSN?$}\„@k³ªááÓ^ ÆdßzWjb¾Jò™Ø>õè0x³ Ú¼–fŒvÁš Ë\¥u‘ZžÓ»ìsg­8«@~yñ‚å®Þӆޯˆè½ ÷@À mô‰ ¾õ.„"¥„1”|•Ôk`ûă·ÃàÃд`ŒÏ‡Õ£&¹·÷-K‚E'ï?«@V©»Ç¡j:OLÚÓ·6¡3Œ^®â½ÑPÓ€‘$K; uNî4°}ì¡»Ëäõð„,‹`UØ”$Â'•–xV=ZyÉì³âCÖ½-§Äñúm™\`J?ÓwܺAŸ â½É°¥‘ÁI¦ ’…r«Ž}«3$¨í‚I…Öwrmpa©•ÁLRŸ «ª§MéêQÇïâ(÷8{*w­å” ‚@fOÑ j= WñÞœ> I¤ÎÒFŸ“[ÂØ·ùÀÈ2,—ÅÇ8 T[¿Yb Ü93÷îUûÿËQ ÓÝ·b¨PúZ*½ À°§™ÛŒçõòEΉÑ6´ë Ó_•ð7£>È'Cȇýàj¿u_cì¾òŸLùtùW«øpÄ|È¢ÿcÏ·kW&L‹§‚DÍècŒ‚÷V7‘> )^'R¶¦¤avå#ä*¿5!­:’Šºüy®Öµ#j²¾3eÏÅ£ìÂdݪ)ADÏ´ž(£TÁsk^ú0â5sEòN¨„ƒÄ¤(û¼Ð¡S}:OöçÀÊ]0!r¯yJhåˆY\|reJéì÷ÁZûÚÔ:¨X­ªÈ6zÿÌV"ùˆ‘X§ž¤6R²×‹Ök²{?tuXÿSfåĨÿYd ÎùöØu%Ožz«}D€Ø´eÃêê’¢žîP¿s?Ì`L€2Š„P¬­Y¤Zœ;(_ÏL¥šF÷VšC(‡üt÷>ßZÀj*;mpQ˜‘ˆ>Rr•°íÆ’šÅOžâÍb—Œ™Yéo”€Üù®½ ðçc *`WÀ¦Zõ̾lÅ6TE`“6ÙJøM±ƒ™/^îêO¿§áð31rµ•Žo: j@Öm;a~8Ìšèè½FÈÊÒ¯äÙ^Îf#±¿ë·^;BY±òH’ ’õ¹o¿¯ÊPdƒ[Š,uyà”ÏÄR¢¡ g"â¹<³lD€Ú‚c‡-|‘ºOa@5ãÄA+3sü׺!GŽÛ›4垬˜ ×Xþ¢±Ô÷û‹QN˜_޾4‰HrÏýãü\#:$£ -Á&x&0bÁDbªÁt)ø¯s#œr´I¼ÁÕ)ah&Ê.4h8û¬±x20¥•‚CŠ/ø¸ÿ[€CÒªôC{Ö¨’™;¬§Ÿ ¯€c`ºûaH)¢sâiK¡n÷jÓÙZ õ!Y ÇÙ…‘¤c2qd§„Õeù'гn²d„#«Ot¯[*SN€™¯à»Þ 9­<Ö„%|úšBȇ}tyag#hZ$û«Â‚R(£LTº5"“r{onÖ˜B ëéÏÄOHQÇC@ ˜ ¾,)³»éæ«ÌH|qB£¡ ´ôû‹’\¸¨"Ò’Šw¿iluS¦6XèË:Ý”ýCz¬àå@¢ÓÙm`*øop#òÀ)eÃÉWi&Ê^¢Kgßi¨ï9ò7S aV!È–ÔJõöðfOygÖ µ+#s$g ±Çˆ<•`)ø×[‰ÇMÛa䫤n+¾úLv6C—ßòªsÇ@Yn”‰2‡fªú¶!S À¿„³¤3”s*+¦(Õ¼>½`+øÖçYM›D£ 3ÌWÉMÖÀéN?ìh-dÁȵÁÂ1P &€‘h?E‚¬ œÔÊ:ä)9‘²u”i36^hØê94Š|7æAŽ”Xø™ä«L«üÈU~ê»`s#háÈ´•\¸¼ l1×%†F7å†òê©™Ç<º=œô"Ì4k¢ïꀌßÍyˆ(qsRéæ«4e§Nhì= {OYñ…$ ¢ÄÉ®W RÐT÷H¤¾¥û¯7ì>™g MJè 31_±YaaiˆQªà½)ìRÿý$‚O90Ê_|Öbù °sÇB¹;fÐB²‡+-‰¶†2•ƒ& ÉW˜ z £Š1ZÁ{³#‘_È$_%Ÿ°–FêðÁŽËDI€KEãã˜(s`À© ~N¦ªÇíSï 9>ÉŠÉŠõDúÔo‰tãf0¾*®/1"þ⟺.ØÜ! Ô _™#Ñ3À“A‹ãÕíÚ‹³vŒ˜†lîœøÁüüÖäZ‘®‰êîZ0<·DÌT¢ækºùª@|±û4Ô÷Dú/L+†Y%V¼1¨1‘ J*­I¦[wì}¾óµîuòpý’½mZnGÆN;Þ K€Œ± žÛ¢š¶iޝЗ¯’;uÔm‚í:7@}—%|X0æôÁ0âÀHJ`zuGV†%Ò|Ìè Ûß²©2¢‚Æ\ÐÇ©xn˳Æae8¾*6_%×k(;<´w™|x¼?Øs©ð•‰PæŠb8PR€¶{Ç¿1¢@xF?›v36ÞÍÊ@~d„âmÖ ¸a¯ÒAÙçC©òSÛŸÖEâ £°¼<*Ø3FJ0-šûØ·®Ù6â@6Ô-ÝÔ¦å¶d4öµ¯*@QFß ¸aŒ¯’ü&¶-h ±« ö6ƒ0-³TYKƃ80FJL =œû,ü‹q ;{£·i¹Ïed¢ŒHÿô²(Ã_%·ëØ>î%ئóçc‘þ Óú™…caNq$9]õ³ÅMWŒ·z¦>—Í I§#¼Ñ6í1¿®ji ·cc`¤šá”$_¥Ôjضxhïlª†.¥n–•E%“HŠ‘9”¦PÞŸî?¹­ö¬ùaíö†¦@þóI/´ïXP†5ßãÖ¨ÔI&g&ÌWéu—uŸŸã§aóQ0Â`—aœ V”GÅñòYRœ C*(ffPtC67{Ë7d{¨TÊA¶¿¨\Xy÷„½U96Ý6`™èm05ã–0b—½H¶¢›d€ä5±oõ!uéٻˠ#‰†'»Uë‚…ïTTu¯=ë@_2êé™îŽo Z$@Æ'S ú¤8S Ò]×0 ŠÒB Z»¥9Rü'¿o±­iäu>¹6ðeu~Hav3€Òý]Ó/ûjÃá_'}¥ô¾òÕ­xŒB`VÆ-1“oFr™ÖD%$¬U¦›4+½ß5Ÿ#݉™B;"Ÿ«ü%_PÝþ=F ¤5OýãžFÿÚâ Ý“=×AXÌ}rb çŒ'™Oo€”ÅÈuÊ>F‡Nstœ°]tjÖ°Ôµôk2(IZ`]áœÖÿh[pÓÿÈ,B“öÒ¼7í]StüŠE›Dp!˜%2¾Õ.K¸! Gžl$S äè5FÒ]§$¥Š·„P÷øàt˜“ÍPu::À´ª$`|&‚‘Ó”ÄßøïÞÝ´o#T2Z/ëß*•sî¾=ù C£2ZGHd 3_&¸ÆJ¡ g½u©KG® õè´w@íqðGú@daMužì‚R5fÞº9t(Uþ’§/¨iÿ#X2^ÀìóÆÞ>Woý½M5å>' >kI%2z]‘­}» ^²K"pM"OÖk…$¿‰\ãGj ãñÀÑZèîîa“#³›QÙÞ¡äáb¶§4×Á:}ù¥¿êx×{NØ:o†Kó›ïG=aØÖy1Yßœ<Ùjð( ¬¼&”I×¹1G©é¯ök®Â¹6€Ü¨ Bm-œ:ÕßÈR°b”IN°'J•Š'lïy£wÚÒ;b„Ë€Œ±Ý#½ÁóOÍ*hûFcØšV`JV UD$$d(œ ã'Bàj7Æx[ZMàAë­› 7‘Ñ‚úhl°rY}0JœPáW‚îÕ¸@DÁ® þ°-ø¾gòšõ G?æ,”!/5~Ó¨›ìOúè•i¹]ׯ]±a0‚Ë]èSíCZo]:B9@øMš›,­i‘7Ýyv˜æ†"9q_wJ IRAš¡„ÿì™xûšúº?r–Š2Ô?<8l^ÿ§%îæEJpÚ€“å@hKœè3©×¯Šmövë(û|È m-‚½»ád˜z¿ÃžžÓÖ; ØHg¤‘½jh‡oü·VÖ5¼ÈY,Êpþøh°*ÜZýÒlgÇäRÕ!ã¬ø$taá‹É…{Îg¢ò#×ð¶šìßÇB82(Ú&Ã7ÌqA>Q¾ÆdèýüqŽût›ÿÏÞI7¯ª«…³\”áþƒƒc»çö×.qµäï_"]ŒžaG»,7îcqµE(5A”>Bm‡@Õ~k± >+8Á æA‰i=¥ã°ÌAõ†훼“×ÝÐpìC¾€’µ×U˜XdšÒ'b²š¸:ò^¯$IDk©=Pê4”# ¿àøK#LãLèBI.Tº /¶Õ•锈x¦-d£–¿õ=Ó¿vï©]|A%+oG˜¼É8%'°Ê5`Ò¢ñUJs¥Ê^“õPsBAμ,ßÓÝ–F ˜p)2„’̹GöÆl–>òÐé˼ÑóJˆ/°HY€1Øb*S|ëû‡ø$JÊ:êþr»NÛ)8¼z»û[N96¨Ìƒ JŠÔI:óWÌÔZÒvÜì+»ç¶Õqu˜0 €·…Kžâ¿Î=`ˆOìÀÙk¢î 4†ðtáÝÐÚyQ³d-$0Ùm-\¬&K*Šì˜-¯n÷VKþéá¶KÿýžW4Α" Fð¶pH+üëó0Š”ø¸&° ¢Ñм‚ê=Ðx´ÿ‡eÊÜ0Ý9fW$†f¶zu»§1”ÿÄÆžþ¸mK çXQ‡C~‡*­ð¯sc+ƒ‡î ÖhØö0"´­‰?=¼Ñ]u©b¬«p„.rʆZš 3s#k‡D/y$¥‚$ ܽÛÎ=Õv?ñ|ÏœÇ~ÚþQ»µÖÒ¹W¤!ÀøO$¾ç_k½;6'¥4„±@ê1Ä‘6>¹ï-ž{«†¶>1]:Ú]ôý±öÉK„¾~¬êo“L)-jH¯áðµ…¯ÔJŸ}¸íÒ÷·ž sŽ—¡yøÇÀ•¹„g9‚h3°ïð£´è´x¨úÙ'üöç[μdÑ,+@Z9•¦ï-¦jñ¯üh̲©ëòkWŒ¶ùV¸äð%J`‚*›CÒ¯iwéŽý^ÓþAu°dÓïºçlÕóª‡ÿEEÊÆÝÀÁ%N´…9g|†ì1±ï `;¢7ÈÉgvó»{^ç3UA\QAÇ7°ÿ†géIü ÷sgÑÁ kÜǧLwtÎ.PB•Šd(ˆ<›dŒ–-ë¦Bj7„Ün É4ÕÖÓºkßÞàèºWzgÝæÆÇÿâ"eãFà¥Ð…%°<…kÇî ¶ý¡ ð¼s”—þò%Þë LE‚+§â¿é|o#-œ/Ù"6° x7<Ížã_ëB2Á^¥áØÄô™á'xûÛ¯òê¡V|}~bQúõ³8ü£+8&=p^ÐYbn`®Ÿèej¡o½õ„Žss¹Ã5ílûÁÛ<ÿúaNõ}½²ÖTrôž¥®|ý¼ˆ³ÄÜÀd ¶¥ÊøÀ¹ä|DmsÚË‘Ÿ}³næhŸFŒÍƒ+*8ñÝKØ¿ü¿ œm–ˆ ”›…Mš¡—«Øê 8þV ¯]÷ ;LapÛaù:¾~1{n>{¯ =d ð!pIäPðÏ÷¾ÁÞ_le4 $ sùü×Ïbï}oÿ-ÉçK‚H]lÀ¼þxè¯_cÊ“»¨Äüq„¯ÉÁ‡Vqä¼Ãá"60Jl AlàesÓYn;_›RÄíµˆùÿÛyI](gÖ}úÑL™QÊ7Ïá²÷¾™eìΗ!–§ofÂ_-bõ3·2ê¼4βÿÆ—Âùr¾œ/çNùÚ¢|S‡EQ¡IEND®B`‚ sispmctl-3.1/src/web2/off.gif0000664000200200017500000000105011664771076014562 0ustar petepeteHTTP/1.0 200 OK Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Content-Type: image/gif Connection: close GIF89a``¡¦Ïÿÿ‡Ïÿÿ!ù,``þ”©Ëí£œ´Ú‹³Þ¼û†âH–扦êʶî Dz3[çú^ß! Ú|4¡H¬—È$„ m:Ñ*oаjwXÁö››‚ÇCߨp¾iŸÖYÕòŽA‹LØ|soå9uýQ´ä÷8¨HRˆrˆ˜hÒ8òÈ(”ùcdxyR 9©Ù‰ùɪ˜)$(%š ºjyŠzURº2KøŠ3êÚJz«[1 — R!œ¬Tüqü MáÜÌÜ­<1í±¹p-,]½®à=,ÁÝ¡Ý]ž­žîŽP>ÐÞkºË ÿ^ïNܸÿ8P@Á‹xõ[çÍ>„,¤rÐºŠ‹ úÐjHޏ6qD²ä´“{`ãØÒI‚"³¤|qfFJÎt&Tù+^Í]ö€x cP1KiFT¦KÇgC• ¬*Ö'·jèêذÆ’¥`ö¬„´j!°mëO+\´rç®­k×-Þ¼qŸòÍíï…À‚ >Œ8±âÅŒ;~ 9²ä; sispmctl-3.1/src/web2/off1.html0000664000200200017500000000024411664771076015046 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$off(1)?index.html:index.html$$ Connection: close$$status(1)?:$$ sispmctl-3.1/src/web2/off2.html0000664000200200017500000000024511664771076015050 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$off(2)?index.html:index.html$$ Connection: close$$status(1)?.:.$$ sispmctl-3.1/src/web2/off3.html0000664000200200017500000000024211664771076015046 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$off(3)?index.html:index.html$$ Connection: close$$status(1)?:$$ sispmctl-3.1/src/web2/off4.html0000664000200200017500000000024511664771076015052 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$off(4)?index.html:index.html$$ Connection: close$$status(1)?.:.$$ sispmctl-3.1/src/web2/on.gif0000664000200200017500000000105011664771076014424 0ustar petepeteHTTP/1.0 200 OK Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Content-Type: image/gif Connection: close GIF89a``¡¦Ïÿÿ‡Ïÿ!ù,``þ”©Ëí£œ´Ú‹³Þ¼û†âH–扦êʶî Dz6 3[çú^ß! Ú|4¡H¬—È$„ m:Ñ*oаjwXÁö››‚ÇCߨp¾iŸÖYÕòŽA‹LØ|soå9uýQ´ä÷8¨HRˆrˆ˜hÒ8òÈ(”ùcdxyR 9©Ù‰ùɪ˜)$(%š ºjyŠzURº2KøŠ3êÚJz«[ — R!œ¬Tüqü MáÜÌÜ­<1í±¹p-,]½®à=,ÁÝ¡Ý]ž­žîŽPÐÞkºË ÿ^ïNܸÿ8P@Á‹xõ[çÍ>„,¤rÐºŠ‹ úÐjHޏ6qD²ä´“{`ãØÒI‚"³¤|qfFJÎt&Tù+^Í]ö€x cP1KiFT¦KÇgC• ¬*Ö'·jèêذÆ’¥`ö¬„´j!°mëO+\´rç®­k×-Þ¼qŸòÍíï…À‚ >Œ8±âÅŒ;~ 9²ä; sispmctl-3.1/src/web2/on1.html0000664000200200017500000000024311664771076014707 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$on(1)?index.html:index.html$$ Connection: close$$status(1)?.:.$$ sispmctl-3.1/src/web2/on2.html0000664000200200017500000000024211664771076014707 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$on(2)?index.html:index.html$$ Connection: close $$status(2)?:$$ sispmctl-3.1/src/web2/on3.html0000664000200200017500000000024211664771076014710 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$on(3)?index.html:index.html$$ Connection: close $$status(1)?:$$ sispmctl-3.1/src/web2/on4.html0000664000200200017500000000024311664771076014712 0ustar petepeteHTTP/1.0 302 Moved Temporarily Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Location: $$on(4)?index.html:index.html$$ Connection: close$$status(4)?:$$ sispmctl-3.1/src/web2/onoff.gif0000664000200200017500000000101111664771076015114 0ustar petepeteHTTP/1.0 200 OK Server: pmctl Date: Sat, 04 Feb 2006 16:03:35 +0100 Content-Type: image/gif Connection: close GIF89a``€ÿ‡Ïÿ!ù,``þŒ©Ëí£œ´Ú‹³Þ¼û†âH–扦êʶî Dz3[çú^ß! Ú|4¡H¬—È$„ m:Ñ*oаjwØÀö››‚ÇCߨp¾iŸÖYÕòŽA‹LØ|soå9uýQ´ä÷8¨HRˆrˆ˜hÒ8òÈ(”ùcdxyR 9©Ù‰ùɪ˜)$(%š ºjyŠzURº2KøŠ3êÚJz««¤— R±ëPL<ŒÜËÖ¬û+±Ìü±IõÌœ­¼MÝ­pÝQí}Œ=ížõ0nÝξ~.~_nO_/Ÿ?¯¿ï%Þ"^ýúûgð^Àw¶êëCk ¸nqmZVÖ¶qa{4fËÕÑEF4ÏF¾H²J9É@2ôf¢J€"qT(ÃæF.]Ø=xX¦'šB‡æ+j'Ҥіâ9êÔYÓ¨ˆRm`õª¹©Z™òìz!+X~JÇÊäjVjÌ´ÂÖ²} 7®Ü¹tëÚ½‹7¯Þ½|9; sispmctl-3.1/src/web2/style.css0000664000200200017500000000140311664771076015175 0ustar petepeteHTTP/1.0 200 OK Server: sispm_http Date: Sat, 04 Feb 2006 16:03:35 +0100 Content-Type: text/css Connection: close body { font-family:Verdana,Helvetica,sans-serif; font-size:12px; font-style:normal; color:#86CFFF; background-color:#FFFFFF; margin:0px; } a:visited, a:link, a:active { text-decoration:none; color:#9DC9FF; } a img { border:0px solid #000000; } table { font:inherit; border:0px solid #FFFFFF; background-color:#FFFFFF; } th { border:0px solid #86CFFF; background-color:#FFFFFF; font-size:24px; text-align:center; } td { border:0px solid #86CFFF; background-color:#FFFFFF; padding:8px; } th.title1, th.title3, td.gif1, td.gif3 { background-color:#DDDDDD; } th.title2, th.title4, td.gif2, td.gif4 { background-color:#EEEEEE; } sispmctl-3.1/admin/config.guess0000755000200200017500000012673011664772151015311 0ustar petepete#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011 Free Software Foundation, Inc. timestamp='2011-05-11' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Per Bothner. Please send patches (context # diff format) to and include a ChangeLog # entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE="alpha" ;; "EV4.5 (21064)") UNAME_MACHINE="alpha" ;; "LCA4 (21066/21068)") UNAME_MACHINE="alpha" ;; "EV5 (21164)") UNAME_MACHINE="alphaev5" ;; "EV5.6 (21164A)") UNAME_MACHINE="alphaev56" ;; "EV5.6 (21164PC)") UNAME_MACHINE="alphapca56" ;; "EV5.7 (21164PC)") UNAME_MACHINE="alphapca57" ;; "EV6 (21264)") UNAME_MACHINE="alphaev6" ;; "EV6.7 (21264A)") UNAME_MACHINE="alphaev67" ;; "EV6.8CB (21264C)") UNAME_MACHINE="alphaev68" ;; "EV6.8AL (21264B)") UNAME_MACHINE="alphaev68" ;; "EV6.8CX (21264D)") UNAME_MACHINE="alphaev68" ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE="alphaev69" ;; "EV7 (21364)") UNAME_MACHINE="alphaev7" ;; "EV7.9 (21364A)") UNAME_MACHINE="alphaev79" ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm:riscos:*:*|arm:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH="i386" # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH="x86_64" fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH="hppa2.0n" ;; 64) HP_ARCH="hppa2.0w" ;; '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = "hppa2.0w" ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH="hppa2.0w" else HP_ARCH="hppa64" fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-gnu else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-gnueabi else echo ${UNAME_MACHINE}-unknown-linux-gnueabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; i*86:Linux:*:*) LIBC=gnu eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-tilera-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configury will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown case $UNAME_PROCESSOR in i386) eval $set_cc_for_build if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then UNAME_PROCESSOR="x86_64" fi fi ;; unknown) UNAME_PROCESSOR=powerpc ;; esac echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = "x86"; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = "386"; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: sispmctl-3.1/admin/config.sub0000755000200200017500000010460611664772151014752 0ustar petepete#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, # 2011 Free Software Foundation, Inc. timestamp='2011-03-23' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Please send patches to . Submit a context # diff and a properly formatted GNU ChangeLog entry. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS $0 [OPTION] ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 \ | ns16k | ns32k \ | open8 \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; m6811 | m68hc11 | m6812 | m68hc12 | picochip) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile-* | tilegx-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; # I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze) basic_machine=microblaze-xilinx ;; mingw32) basic_machine=i386-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little | ppc64-le | powerpc64-little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; # This must be matched before tile*. tilegx*) basic_machine=tilegx-unknown os=-linux-gnu ;; tile*) basic_machine=tile-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: sispmctl-3.1/admin/install-sh0000755000200200017500000003253711664772151014776 0ustar petepete#!/bin/sh # install - install a program, script, or datafile scriptversion=2009-04-28.21; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false no_target_directory= usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call `install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then trap '(exit $?); exit' 1 2 13 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names starting with `-'. case $src in -*) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writeable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; -*) prefix='./';; *) prefix='';; esac eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: sispmctl-3.1/admin/missing0000755000200200017500000002623311664772151014365 0ustar petepete#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2009-04-28.21; # UTC # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, # 2008, 2009 Free Software Foundation, Inc. # Originally by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try \`$0 --help' for more information" exit 1 fi run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and \`g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: Unknown \`$1' option" echo 1>&2 "Try \`$0 --help' for more information" exit 1 ;; esac # normalize program name to check for. program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). This is about non-GNU programs, so use $1 not # $program. case $1 in lex*|yacc*) # Not GNU programs, they don't have --version. ;; tar*) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $program in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te*) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison*|yacc*) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex*|flex*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit $? fi ;; makeinfo*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar*) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: sispmctl-3.1/admin/depcomp0000755000200200017500000004426711664772151014352 0ustar petepete#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2009-04-28.21; # UTC # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free # Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try \`$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by `PROGRAMS ARGS'. object Object file output by `PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u="sed s,\\\\\\\\,/,g" depmode=msvisualcpp fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## The second -e expression handles DOS-style file names with drive letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the `deleted header file' problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. tr ' ' ' ' < "$tmpdepfile" | ## Some versions of gcc put a space before the `:'. On the theory ## that the space means something, we add a space to the output as ## well. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like `#:fec' to the end of the # dependency line. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts `$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in `foo.d' instead, so we check for that too. # Subdirectories are respected. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # generates 2 separate objects for the 2 libraries. These two # compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for `:' # in the target name. This is to cope with DOS-style filenames: # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. "$@" $dashmflag | sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove `-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC" # time-stamp-end: "; # UTC" # End: sispmctl-3.1/admin/bootstrap0000775000200200017500000000154611664771076014740 0ustar petepete#! /bin/sh # bootstrap -- Use this script to create generated files from the CVS dist # Copyright (C) 2000 Gary V. Vaughan # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. set -x aclocal -I admin autoheader automake --add-missing --copy autoconf sispmctl-3.1/extras/Makefile.am0000664000200200017500000000013311664771076015236 0ustar petepeteEXTRA_DIST = sispmapplet.e3p sispmapplet.e3t sispmapplet.py sispmform.ui README addheader sispmctl-3.1/extras/README0000664000200200017500000000115211664771076014064 0ustar petepetesispmapplet.py -------------- (C)2006 Mondrian Nuessle This is a python script implementing a GUI for sispmctl. This is just a demonstration what you can do with sispmctl. No Makefile & automatic installation is implemented! To make this work you need the following: - installed Python - installed Python bindings of qt AND KDE Then you need to do the following: - run # pyuic -o $@ $< # cat "from kdeui import *" >>$@ in the current directory - run #chmod +x sispmapplet.py - you should be able to start the GUI by running # ./sispmapplet.py - Have Fun! Questions please to nuessle@uni-mannheim.de sispmctl-3.1/extras/addheader0000664000200200017500000000045711664771076015037 0ustar petepete#!/bin/bash if [ $# != 2 ] || [ ! -r $2 ] ; then echo "Usage : $0 contenttype file" echo "Example: $0 image/png status.png" exit 1 fi # output header ... echo HTTP/1.0 200 OK echo Server: sispm_http echo Date: `date -R` echo Content-Type: $1 echo Connection: close echo # ... and file cat $2 echo sispmctl-3.1/extras/sispm.py0000664000200200017500000001155511664771076014721 0ustar petepete""" Control a GEMBIRD Silver Shield PM USB outlet device. For example: import sispm print sispm.get_num_devices() # Print number of devices on the system. dev=sispm.Sispm() # Get first available device. dev.set_outlet_enabled(0,True) # Switch first outlet on. dev.set_outlet_enabled(1,False) # Switch second outlet off. print dev.get_outlet_enabled(2) # Print status of third outlet. (c) 2007 Mikael Lindqvist (li.mikael@gmail.com) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA """ import usb, struct, sys VENDOR_ID=0x04B4 PRODUCT_ID_SISPM=0xFD11 PRODUCT_ID_MSISPM_OLD=0xFD10 PRODUCT_ID_MSISPM_FLASH=0xFD12 PRODUCT_ID_MSISPM_FLASH_NEW=0xFD13 class SispmException(Exception): """ Exception class. """ pass def get_num_devices(): """ Get number of sis-pm devices on the system. """ cnt=0 busses=usb.busses() for bus in busses: for device in bus.devices: if device.idVendor==VENDOR_ID \ and device.idProduct in [PRODUCT_ID_SISPM, PRODUCT_ID_MSISPM_OLD,PRODUCT_ID_MSISPM_FLASH, PRODUCT_ID_MSISPM_FLASH_NEW]: cnt+=1 return cnt class Sispm: """ The functionality of a Sispm device. """ def __init__(self, num=0): """ Num is the device number on the system (0,1,2...) """ cnt=0 busses=usb.busses() for bus in busses: for device in bus.devices: if device.idVendor==VENDOR_ID \ and device.idProduct in [PRODUCT_ID_SISPM, PRODUCT_ID_MSISPM_OLD,PRODUCT_ID_MSISPM_FLASH, PRODUCT_ID_MSISPM_FLASH_NEW]: if num==cnt: self.device=device self.deviceHandle=self.device.open() return else: cnt+=1 raise SispmException("Sispm device not found.") def _usb_command(self, b1, b2, dir_in=False): """ Send a usb command. """ if dir_in: req=0x01 reqtype=0x21|0x80; buf=2 else: req=0x09 reqtype=0x21 # USB_DIR_OUT+USB_TYPE_CLASS+USB_RECIP_INTERFACE buf=struct.pack("BB",b1,b2) buf=self.deviceHandle.controlMsg(reqtype,req,buf,(0x03<<8)|b1,0,500) if dir_in: return buf[1]!=0 def _check_outlet(self, num): if num<0 or num>=self.get_num_outlets(): raise SispmException("Outlet %d doesn't exist on this device."%num) def set_outlet_enabled(self, outlet, onoff): """ Switch outlet on/off. Outlets are numbered 0,1,2 and 3. """ self._check_outlet(outlet) self._usb_command(3*(outlet+1),{False: 0x00, True: 0x03}[onoff]) def get_outlet_enabled(self, outlet): """ Get status of outlet. Outlets are numbered 0,1,2 and 3. """ self._check_outlet(outlet) return self._usb_command(3*(outlet+1), 0x03, True) def set_buzzer_enabled(self, onoff): """ Set buzzer on/off. """ self._usb_command(1,{False: 0x00, True: 0x03}[onoff]) def get_num_outlets(self): """ Get number of outlets on this device. """ if self.device.idProduct in \ [PRODUCT_ID_MSISPM_OLD,PRODUCT_ID_MSISPM_FLASH]: return 1 elif self.device.idProduct in \ [PRODUCT_ID_SISPM,PRODUCT_ID_MSISPM_FLASH_NEW]: return 4 else: return None if __name__=="__main__": arg=1 usage=""" Usage: python sispm.py Option: -list Show list of SIS-PM devices. -dev Select device to control. -on Switch outlet on (outlet=0,1,2 or 3). -off Switch outlet off. -status Show status of outlet. """ if len(sys.argv)<=1: print usage sys.exit(1) dev=None while arg Python Qt 0.1 sispmapplet.py sispmform.py
sispmform.ui
sispmapplet.py None
sispmctl-3.1/extras/sispmapplet.e3t0000664000200200017500000000027711664771076016171 0ustar petepete sispmctl-3.1/extras/sispmapplet.py0000664000200200017500000001016511664771076016123 0ustar petepete#!/usr/bin/env python # sispmapplet # # Python GUI script to control the GEMBIRD Silver Shield PM USB outlet device # # (C) 2006, Mondrian Nuessle, Computer Architecture Group, University of Mannheim, Germany # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # # nuessle@uni-mannheim.de # import sys from sispmform import sispmform from qt import * import os def socket_off(num): #print "turn socket",num,"off" #print "/usr/local/bin/sispmctl -f "+str(num) os.system("/usr/local/bin/sispmctl -q -f "+str(num)) def socket_on(num): #print "turn socket",num,"on" os.system("/usr/local/bin/sispmctl -q -o "+str(num)) def socket_get_state(num): #print "get state of socket",num #fd=os.popen("/usr/local/bin/sispmctl -g "+str(num)) result=0 for line in os.popen("/usr/local/bin/sispmctl -q -n -g "+str(num)).readlines(): #print "line: ",line if line[0]=="0": result=1 elif line[0]=="1": result=0 return result class Mysispmform(sispmform): def socket1_clicked(self): #print "socket1 clicked" if self.s1==0: socket_off(1) self.led1.setColor(QColor(255,0,0)) else: socket_on(1) self.led1.setColor(QColor(0,255,0)) self.s1=1-self.s1 def socket2_clicked(self): #print "socket1 clicked" if self.s2==0: socket_off(2) self.led2.setColor(QColor(255,0,0)) else: socket_on(2) self.led2.setColor(QColor(0,255,0)) self.s2=1-self.s2 def socket3_clicked(self): #print "socket1 clicked" if self.s3==0: socket_off(3) self.led1.setColor(QColor(255,0,0)) else: socket_on(3) self.led1.setColor(QColor(0,255,0)) self.s3=1-self.s3 def socket4_clicked(self): #print "socket4 clicked" if self.s4==0: socket_off(4) self.led4.setColor(QColor(255,0,0)) else: socket_on(4) self.led4.setColor(QColor(0,255,0)) self.s4=1-self.s4 def __init__(self, *args): apply(sispmform.__init__, (self,) + args) self.s1=socket_get_state(1) self.s2=socket_get_state(2) self.s3=socket_get_state(3) self.s4=socket_get_state(4) if self.s1==1: self.led1.setColor(QColor(255,0,0)) else: self.led1.setColor(QColor(0,255,0)) if self.s2==1: self.led2.setColor(QColor(255,0,0)) else: self.led2.setColor(QColor(0,255,0)) if self.s3==1: self.led3.setColor(QColor(255,0,0)) else: self.led3.setColor(QColor(0,255,0)) if self.s4==1: self.led4.setColor(QColor(255,0,0)) else: self.led4.setColor(QColor(0,255,0)) self.connect(self.socket1, SIGNAL("clicked()"), self.socket1_clicked) self.connect(self.socket2, SIGNAL("clicked()"), self.socket2_clicked) self.connect(self.socket3, SIGNAL("clicked()"), self.socket3_clicked) self.connect(self.socket4, SIGNAL("clicked()"), self.socket4_clicked) if __name__ == "__main__": a = QApplication(sys.argv) QObject.connect(a,SIGNAL("lastWindowClosed()"),a,SLOT("quit()")) w = Mysispmform() a.setMainWidget(w) w.show() a.exec_loop() sispmctl-3.1/extras/sispmform.ui0000664000200200017500000020060311664771076015564 0ustar petepete sispmform sispmform 0 0 328 880 255 255 255 SIS-PM Applet led2 40 320 30 40 led3 40 520 30 40 led4 40 720 30 40 socket4 90 630 200 200 image0 false true socket3 90 430 200 200 image0 false true socket2 90 230 200 200 image0 false true socket1 90 30 200 200 image0 false true led1 40 110 30 40 0 255 0 789cecbdc7722b41d325b69fa7f8626a37a1e8012dc8851634f09e9e5468514d82061e3430d4cb2bf36466553578ff91165a8a1500d10008a2fb547af73fffc77f1efa9dfffc8ffff9dfbebefdf7c7f37f9edffde77ffec7cbcf74bafd3ffecffffdfffa6fff7dbf54facfdee9c17ff60f4bffd9ffefffdb7ffbeff9f57f9effe3f64abc707c8363fce07880e37d5e38bec2f1012f1cf7707cc80bc77d1c1ff1c2f1078e8f79e1f819c7655e7cec4f717cc20bc7b7383ee585e33b1c7b5e3896ff97f3c2f1258e9f79e158beff0b2f1caf703ce485e30b1cbff2c271838ff74bbcf0fdf079385d9cbf5fe3183f389ee1f880178ee7383ee485e3131c1ff1c2e775717ccc0bafffe0b8cc0bc7ef383ee1856379ff292ffcbdbcee79e1f50a8e735e38dee0f89917de3fc1f10b2fbcdec4f190178edf70fcca0bc7c0eba0c40bc70b1c03601c9fe318278ccf9763fce0b88ee3435e386ee3f888178e3d8e8f79e1f3e4b8cc0bc7531c9ff0c2f13d8e4f79e1f800c79e173eef17c7392f1c6f71fccc0befc77e3b78e1856387e3212fbc1ffbe1e095175effe6e3c3122f1cbfe2181b1aefffc43100c6eb1d1ce384f9d8e1fb1de207efc7f53b3ce285f797717ccc0bc7f8be87655e787f86e3135ef8bc431c9ff2c2fbab38f6bcf0fa238e735e783dc7f1332f1c2f71fcc20b9fff82e3212fbc2effef95175ec7fb8f4abc708cfd09f2c5f93bd023b6b39c3ff617e095f3dfc7314e187f8fef7b841f1c83be8e8e79e1b886e3322ffc3de8f9e884175e6fe1f894178e4738f6bc708ceb7f94f3c231f03a7ae685cf7bc0f10b2fbc8efd7f34e485d7e5fbbcf2c2f9e0fb1f9778e1fdd82f6057b2ffb1bf41be387f87fd87ed2cf47f8463008cd7e5fd38611c831f1de307c7a0efe3322ffc3df03e3ee185e32f1c9ff2c231cee7d8f3c2f71be238e78563f0a7e3675e38067f387ee18563f0bbe3212f7cde318e5f79e1fb80bf964bbcf07efc7fb067c1ff0cc76058785d8e41c0785dde8f0d8d63f073c02bf88f718c13c631f66b193f3806ff2a9ff0c2df831f954f79e175f0abb2e785d7413fe59c17ce0778949f79e1fde0c7e5175e3806bf2e0f79e1ef41efe5575ef87bc8a393122f1c431e421c09fde3fd60cf72fee057605772fed8cf205f397fec376c67a1ff128e01308e9f708c13c631f03cc10ffe1efce6e494178ee5fb785e783fe8e124e78563f08393675e3806ff3d79e185bfc7fe3c19f2c2eb7b387ee585d721af4e4bbcf03ae43bc4afe08feb0f7124f40f7d00ec59ce1f9f077625e70f3c41be72fed82fd8ce72fed80f8057ce1fe78bd395f397ff8f1f1c833f9d7a5e38863c3ccd79e118fce6f499178ec16f4f5f78e1f381cfe990175e07bf387de58563e0e34bbc700cfe027543ce1ff208e257e81f78411cc9f983df833dcbf983fec0ae84fe71bd40be42ffc007db59f81ff40dc02be70f7e8dd395f3c7fef4f8c131e8dde7bc708cfdee9f79e118fbddbff0c231e8cd0f79f17106faf7afbcf03af6635ee285d7b15fa05ec9f9435e43ddc0f967e05710bf38ff0cf20fe208e79f819f823de3fc335c5fb02b9c7f86fd02f2c5f967f2ffb1a1718cfd0c7871fe19f81f4e17e79f018f1c3f38867cca9f79e118fc2c7fe18563f0df7cc80bc7a0a7fc95178eb1df9e4bbc700cfe037512e79f013fa85772fe90575037e4fcb15f207ee5fc812fc4919c3fe419d8b39c3ff83fd8959c3fe411c857ce1ffc03db59ce1ff204f0caf9633fe374057fc8ab67fce018fce9f985178e21ef9f87bc700cf9fdfcca0bc7a0c797122f7c3ee807eab39c3fe80beaa49c3ff82fd42b397fd03bd40dd9ff903710bf72fed8af104772fea00fb067397fe863605772fee0b7205f397fe823d8ce72fe90378057f007ffc0e90afee0172ff8c131e8f365c80bc7a08f97575e38c6f51a9678e118f4047341ce1fd707eab39c3ff82fd449397f5c4fa857823ff44fa81b72fe908710bf72fee05f104742ffd81f60cf72fee0b7605742ffd0b741bec2ffe5fdd8d0783ff819e095f3073fc7e9caf983bf0cf18363f097e12b2f1c839fbd9678e1ff813fc03c12fac7f587b920fc0fe707f559ce1f78439d94f307bf827a25fc1fff0fea86f03f5c3f885fc11fe7077124e70f7901f62cf8837f815d09ffc37e01f9caf943fe633bcbf9835f015e397fd0074e17e73fc0fe7ac58f1cffffebffbb95395efff5ab7fdfb1fbfe2226bbefc4f2599e3d672fd9307bcddeb2775a1fd9281b6713ac311d4d703ca67b7e34cd66749bd3f13c5be0d15c8fe6f40abfb6a4350d8b9f1fe9eb73fcb5bc6b8ac78bf088d75c7fdbb34b7acc9fb5a0b5cc3eb32fbcbac4face7ee8589effc4f18a6e6b1c7dd26beb6c936d71bca0f77dd3faa2677ff0579f78fc85cf5825c72b7af4ad9f24f7f1c69fc9bff9fd63ba5a395db93fd8e08afe6667f49a372cfedf62022c7c769e5d6497f41f165925ab66b5ac9e35b266d6cada746b651dfaddcebab86f87677bb43a38ea647d5a6d3ce21baf01bd3ac0ead16b3d5dfcce01ddf3e32bbc83df79955dd36da0ab4f47f2bbafcff6b31b7a74a5ef93dff60cbffb968eaeb1eee8111fdd65f778fe8eeeefe9f73d2d7ef68e1edfe2d57b3cbecf1ef0f801eb118f9ee87709bf9fb23d1cedd1daa7e70eb2435afbf4fb283ba67540afb6b2325db5215d7ff70713b9b6bfb4bc1dff5798a478d1e38bec243ba53df89d55f187f443a8d4804c936e35bae7dfb4f00a3fdb08ab8e637ba6a9ab9b3cd3d5e71b78d4a5d5c22bf6a81550b6dff24a5bef5b016bc15b8e056159bd70eb610fd8ea27d85ee1be9fa01a91151c6f14b53b60761716a328c8dd1306255a87cebbdc3dbb173774afeecdbd133a9feea3884bc0c42798fc177462afc96f37223c6684c786e8a34a9897ddd84ddc945e9a6635c6877e3781535d8f5d404b10ab075cecb978141f37417b5d5c71396ee14810e82a4a2dc5c91e750356ed9d235b9de45127e062180d023a7dc524fd7dadf479a58fae02b5dd02af3bdc6eb1ee959e1e414544316e46b8ccddc22ddda7fb72dff468ec7e222528f7f2019b3fd227c5c4fec2ade83326e09e1b5d5ba29531ad29e1c26f616cf89103b5d41819c1475102151962fc8e80852152ff077e425ddd4039424f463b864f23d04937a064d4d5c151110f41a11da8a795504fa420a11cbebf0ef4623815b1b94970b9514e275c8ea9653f3b02b5ac412d1bb775bfeecc0d898f9d458a808cfe0d32e27f294ff83d6ee4ce49967e910459676b77916de8b6052263c10188302e533ce695291a35458469672ad423bf95eb19efabefd0942ca328c1421e09bf6b2ba78b7cae1b706b29a78bd425546254c4f7bd849bb5120e27bf858f0d024fbb52ae66bf0511e162d7816aaec1db189728779e206148ae102a97ae423452753557770d47df1d5c2c52c8d9ff1bbd0bef7d762d92215faa4154a09d309d08f71254268ac454a44cb8fa78044e1650034ab8e282a161a21426d8189dd4948a1a81a6ba81bb354145f24c3d5050c4a553a09b16903199d4c5d536dae906b9d3539dc3b40c43a61fa8466824a2c4747195504c2a69985e847f0926cfae4da874c0c3baaee798279e90d6e48d63452c848bfd539eb09ef54e52e40b7c8bb5bd4a40a5aa98302a7c9b24d412694785518192e2cf54f10a74f387829a818a221651fed40325d9ef6ed01b3a81a7c97351fe0837eb822eda4163e8817a528d20a2d10bba5ed410e535e3617dc5e40e9463a8dc4317333a9913a50c88525edd95bb7637eed6ddd133178a8bd0ca6f011595e68609de734ef6c71c7ab668ea8c096885b917565996520b23242808e54cf47116648e4b789cea6e3b3fd3c0f34041aa2dd4131d4f785b43a828d05733c1a91b28c9743e7b14254fd4dedaaaa3b5148b36647faa09f4148754e60c821e701564cc95ca965bdc44aaecb1fec53a31c97aa6947bc2e49de44acd3db847ba35dd8caee390a589eac32ee5603b98fc925d3886c5f5a996935a598448e46055c584afbc6a62a0a00ccf4d1491b16a01292d450a9a060a32bc127c8c76824e37558dae261a5ee073459dce785bd4b34dee9b06d752be65b8f4949399cc6febb303d500fa78dc578caeb2a83b9b3cb952fb27d2c97da09327a0724974522254aa6e8f34b07d77e00e49e61f652d77cc6844cd2bda8f9177659ede35522bd82cd96facb5f2af2a6b5f412f8e6b12b859fa280b14f4f7d81e47a99422e302e530470a3c8e8e9b899690ea0bf5c2ef66b08bba2af1e5c8644b3748a076825047ed1cd3c83a8136a24666c7d19229daa4b7aa159748f3624ce6442903d2be4aae4cfcebc49d12001c23c8fd3369039fd9f3bf50314c32e75f48b6b307e414dc6ba1de841ff81676b9575539984917fd5dd003a6018de232de26f8658a48cad5a6917ae8ea2926c2b552cca2de16b46fd30b4c1b68a9d7216ad75d7d9ee549d1aa3164527c22efdae561727f535877c14ed9232be529702fa19477b7e787eec6bffa37ffee3f5cc38fe81b5d282a5118ff1aefa2674f884a480b263d7802444caa0807db08f75264aa8a0ce43e3f52de95d24e96a0452b589df1d5896237057fdad5ad2375a8ac9157f4f9f0384aa2444f285aa80da58c7a90fdddace8196865d15bd02d504ce79f08f5033a576aaf5c25a8b055cf56ca1361c2568ac894b21f9365ffed277eea677eee177e49d4d226eee40abec5f3ec5731c9893e26ae4598b488569690294bf5ea0113b6532051b60195aa71b248398a51c2dd54f604ace4153c3b569994ca9b2cf0b24c7506933b918282be6d1226e16b4233bb364f943b8d44fa472b27ea6786915997d17f9362324828e64a97d82ab76a3bee3bafba97514ad97fba8d1ff92fffed7ffccaaffdc66ffd6fd623abc5257eb05c3021c6c176bb50c9297caf4be8c3462bcabdc47e04ad541587846298af09d504c91379dc449f0bd415d0ca76292a6806a9ccc992fb69011de169d354770b9a80c91bb340ffe5e56928f514712a5a9ced84523a0926830499eb44a2b09c17dfd71c7452214caaeeca9fb913ff4be2e3dc5ff84bba557cd53fd3b5390b3e5ff031c124bb24cef541788cd4efbd508fb6e0b262cd4bb1d8b24d2f68d06fc142afb5d18851093d33b1ab6f7495f036d194b320638c3ea2ec8f5ab44bb1115952d096eba014f3e134c2bd59ff264f9a7acd4daa986ed60e1e8076d09253896f564bea17bb4a3400d1c7c456515488528ec1bbd84a19fa1a30d973d7be0eee7549abe19b7ee94eb24fb72254d8839f9b3c2109df2244de1cdf73cc63163091c842456dc72d3cc453b5171ac9aeb2df1db5cfccf714fdbb6625449f6ebbc021ccff917a103b6a39f4d4c21ba88e7a95455f482f5c13b96ed7ca49fac1c31bfd2266df99fd2db6f7adde8b2e1bbd577bf0ca3fa96fbea4bff7f098ad7579ee46fd95125bb801b53cc2f375a89a17f3ae7bd1bdfcd8b7dd97eff8aeef61357c9f2cfc125183673f6376ee46cabbce098b77c736bc20325369b200175ba9e5b8a1fdcdbbb14767b34fffad4292ebd57548d75b600db0dab42e6977bcd0b7b9a4f5accfb1efa783f797e8268feeb14afa5c89f652079fc932b1844feec0eb3dc4ffb8a7a30afe62a8f7f45e5fa3bfaa9256538615c0abcc7c826e4b3cff4ebfdffd27edd1777f463cfdca6ebc6ff91992bd1b3ff003f7e6afe836a0bdbca1dffcda98fe6ac347f4dc1bde75456b808557e9f5aa7b214e75a3bbaaaf92e5c9a229e05e159c5795bf05fdfd35c9f985bff1b7fe8e5099f97bff40085ea88d7896492cfd8565896f41becf944a049129288511d9825774b23bd2275ee9fb3dfa275ff223fac61df74cfffd90bec33e76d013f4c15bec9752d40e41c9cf408911aa0041be7fc14ee265e856e891203bc359cde937eb3139fd1f3ecf277e86d61cdae60b3ee9125ca29dfcfd109fa878eb1e28016dd915f66c8991a56b5bd277ca4e59601708fe25ec877bbc5ad27df08a3d70e5f7dc11e1c8b6a258a47df8249f44f7c239b7a179f18e5b02df4fbfef0f88426e81ca2569c65b774d52c3fc2dcee88431210a1a6b6cd5a8640e0bf29b68640a0a79a2b32fbb2176c640addf6e2235a356d3544e6e3675f4b2333f336bcda4ab69a9c2eb1a219695ea42a9a6945a1cf1bead37fbfb8e5a869d2021065931ca65f6a1f0c596f2cbe8f34a232cbd44cbba0edcaf4457bd4cd779e82ee9efeb74634ae15dc8b114d68765cf7518139628a47b1d92e5b8263cee804a8364fe5176e546e6f5524c4e21e1c7211e2e98cc491b638f6485e47483be2123c2dfb4aa5a713968c6412736f9af1e1891f39328dd4d5f8eb744578e76cb443d6953f5e064c10a8d9ad82491fb896753ec49d189cd86492c99bafa39633cc7e29d5137eb86fdd4d03dd248348068ab98e5587203e21ac7fe8c5eab8156d81b299ad78c10198072a17b11173c7267beec4f149353e25f3f79e60774fd8b74c2790f1f814a662a5526b0ed3fe98a36e9ff9788471dd2e355f0b4f0da68247213f4dfaabe5615dd2be064af04cd2c60588e4805ef4c513b8e3e8049b05d221aa98e1cf434f35886a8ce2e36318663ba7244aa1e626aa926d329206298b06cbf271efa993bff085f2971f8ec01b1e027f8ec2f954ede61a38894ff212c6e81c9a96fe49e644adfbf441f2464fc29e8641af0605972ea46c4d1bee9fcdaf45f67c423392723fa23373b56fdb6804cd934e4943e986ed4f20f1a756a5b26d6fe3878368d2ea2d69cd248f068b29da23e01c684af6b72fd53af807a979b85b84053fd9886482be1c4690e404a27d19abf776d7fedf6891632fa9c3ebc9187b01bd7909ff7e05d84893bca737708cd8b30e184487a54c95fdc1b5d716ffe2ef0ae53e8c15364e90822b3ec8d507ba5eb5ca7ff512289b5a6e7566ad16f14816d824244a89ca052cea2cdaf1e4ca30fc5c03c6593029508ff1a2714927ad2847745eb516d1bb3f08bd68b514988d7444f7f4d2d9b66163339ea8a403bc8bb56b6ebaf8c516393310fbe960ff3d7ec91be458b28e5296072097d917d5eb01bf337bfccdf81c92930b9f573ffed4ee97f9dff0393b9520ae74dcddcc7e0dbb5685f43dba26f36229a6144b6eaf7da047f4bb5c0b9a2956f367d59ecfcd4fb12112af8c1c649ec2cca169329e34035915612ab3ef12d4f1304828752e239c933e6274b7957ccc1305f7ea490b6eabc16314e2df91be254d764035e8346af19136888cf41c6b37e4ef28430c9c886374c3e08958bdcbb7af6c8dc2b60f21ee8640a5a113ac989bf8de83406c41d8f389f0d586c140dbb8f14927ac2b6418a04ae15b048fd32e61108bf83144aa5c838d04b8c9a99a7cc996dafe8a89fd9b894f95942547ab21383b1ec8c62b4bf95508a3d633225faf27b4137638ffd0351c22f51ca359d419f30390874b200ef828cf77bfe377ff11bc284658971afb77c44ef3cb6f889caf8896630dafd1c5ac0277d932be25c3784da32f144dabdc9fa5def64caaf763d94d5023ec94aae7d4a2ba9d4373fd858a39dd1a3ec927b8d32070f7e2dcaf91023abab3722e602a4d9651195222ee6d5efa925209422faf19dabe46377e8d6747e5dd2bc0ed437dc460cb8c456236172e5b6f94b3e21cbe4542805bfbb443b63c2c125bc6b446bae58c8ed0376e51730d9cfbaa4837d07fff02641257a8b138e45d76c9b52400121f1434e841e127f7fd1a73c097c2c2b20635e319329c143a6f23d0b12df15257ce05f93c0d19a056a891933ad40197c1f73cea2a7d83c40a977f8c6cdf2295980b47749a6a49854e075e0c8d6c6efe533c544f52e42e58ef561d7241dca2b266784cf0498444d78ea5b244d3877a54b34b29fd548035b896f58328c126c3685ab5d2dd04ee450db9d77c973c152497564f361aa363609bad9582928fbc3c55ca09642ec6b47d7926cb4107b49229445eba4a5f1ff6640a691a531b04ea015a313f67ab18fa3e90efc083cbe044ca2c78bed7eb61a8ff239d14413de955ba514c664e1faf43f7f13dec5f9d7f3902dcd32e51598ac8577d1591f232b72a3fefa54aa54ff0b295f55da894745ff7e35d0d63fa23109d54c12c95f8c9a899c1f074913f230a2ed182cc5668ce617e47c9a0718e92546905bea5f68a844893ed22855c42b7aed9ec876ecd07eff24bb624fe9443cc30bb64f54ef9ae74bc2e432c18434affc33ffca06ec21164c882f8d90232fb9efc2bb4e804945edc50961c25eaf8b903111e35c7f91d89118caa504936df24a7507a5a2d48f5932137b26e162699c3ff1fd17a3291afb8a54d1104c049d823d99e695a5d23edaf316ef8a51e2b6528a6072e3725f7207396ba73f1a6dcc954e86c4b9de03effa214c7a529d16b4e1577f4ca8ae0abceb433199a26e619ebd044c7a448765c244b05817f856caa5e22de553a92ebc6badfc9b46aa2669d27865615503bd64c10f13919906191fef1d222e811aa2fd825c0c43ab11a8c3f8586acdff2b27b997d828a40dfba1dfe6b38cbd1d4f817755e0152fa5f20474729a6292aff23549893ca113a92599c2cbc5b9126377cc9810e275da07fb74452f127b715390ed456422a5a476fe5f295fe476f17d459d206ad2d59d77a4de1893fc93a08b05fd2b58ed692e856ace852c9834fe98560444fe65d19ff68e4ce9592e8bf3649d1c2a268fd93e3079d17cc8b2e85d2c4f402797ecef52fbe4d4cfbccb8764fde73bbaf058f52ea9eeb950795263de956dfd8bf2ad75225152cdab28dbedb8bc73f58b52befcc70b10dfbdcdcc8b66364bf4afd95f06249de59bede65f4abe453df1b2583eb353ae5557b41a6aa5ecfab8a3dfba482b963d19a3f3d7c4ab0813ff6b98d0f10c11a405f221258e73c29912a477f5e083bc0dbccbf92fb203f3c0bb4e818955548d9153748e78e4377d6be65d5be6631a035ee3d1a660cd17711134b6053cfef828ff60b0ddf98ba2756ada85ee89442b0fdc6e27aaaffec9509b11b32acd5299069bd2bc91451dac91d04bf4455a7c38d2495fa5ca2159f25bc7dfff3bd88ccfaa0b33ef7af76377e29ffdc4bf19262ae367fec31f16307907ef1a814e1891893bd7ecc9257d3fc284ce75058fb06062f9f69be235fb4327ffd691233d6d70e537594a25d5e4f3369a9b61d1e78ae9e1c1a6919f49b207e0e58c9a58c8519e467a496c95c8cf9ac18bdf08b8181ab11a26e55d3163423161ef0af1ae0d7d971562f24fc81a669b11f94482493e73b784c965f0779d064c1efff0ae51c2b9de1493057db70e6392e5727d64af16766ad1b6df45a54823db021ee6a9d9a6e8ea670b0a2b5d1bf689e00aa6fa8ee524dc6297b64516334241f28f839738782283eca88b2739f1b4a47115b1144d074b257d37fb9b5d2496e3b17ff455b233b6a477ed657b245f66eaab171fe45278176cc6d4b742f224dfba1ba2ad4027ae05ee35062623c452de35c365094cf6e9dc460189bf3663942bd50222e51d24aa0902d5e4af52ce540106df5a6db1857f2a7a789b850c3bb94a1d683e820e6720723de1355dbb9ada2ec6c9529f64f0d4ff89a63403667f6b5e5229df09164a94f387beed1e73a6e12522e14788505f6a862a6c46d2bbd83e113ab90b9432cb7ffd11e1986232813c19039731103a174ce83bf7e8f3cbd990a508f6af6113777c1195ea3fef0b5ab3d936963506dd81a9e2472b70bf352f4f64c244352cf30d27d67df4d96752f33020aae11dbaa6ebc171f1365df70495c426119bbd16a8287abe627d45a3b08a3eaf54ca1b26a33c7377f4fd5fd8b7a298bc84ac61e25dfe2ae55dea5b39255d5830390bf2e44debaba3843f554c168866329d1cb33c89d264874ea234311cec166822d1d5b6a62128d555943aa4de99b39624536fc73f162c90b48acfea28261641c1b5e6aca2125d11b60cd6b463af92aa24cb96b49896e54b1afd15e57cf44d3603269d44f34af3ef0efca33b7467b4bfcfd92305deb5d6bc1dc184e80419aa6fe05da98c3fd8c1e43dc16404fe6598ccc0c1c5b7b232398b55f43f16f5aea827471dab202f124e5501a7fa914aa4906599e6bb4e020621d618728ccd3f9f441c21d53370b63621b34ffb94adb50a9d71c34d5d31dad50c1664f42137b35d2ba598a9f7373bd2e28dfbbeedabf95736751f890f52f26990b9c274e2af41273df02e93276b7fe0ea44d5453a99288dcc911b1131812eec32ff82ba87b8364a017f71d924c8a4717b8d8625fc6aa59c6aa939b0410e25be7ab10ca7c13f9cb9341fdfbc8fe3342e6fdc09d7ba4bd7eb91aecdab3b722485b34ef08145c952ac9b88f5e3e6fb4ae3f23113bf97e85e86c91ec96fce1e1d2243f548f3530790f265c8f837ff4c98f48d77a97d42f2e41f987ca87d2252fe9d735b089519ec78a6931fd185a3a4ff87febb0d48195d9413a9be4d2c8bb54af31fe4927d462dd730093ee1a25fcb62f2a11a2c44aa32975a8ae6afc7b39033f77475de492fba72b3ac1dbcc4c12a49e827add6336f4b2b4bb3252c97386a5de2892c319d10ef5a1257117fd71cf9a92ff0adbc33ef62fb84ecf83ee22788a0805e44c62798202bf5437389c64065c2be153ae94fe55dec835c0559bc0e323eb54f52440c95aad931769f4810e6585215b60ab497e4b514625b7664bee08852acd94bebbd8c5e023af0db3db835590835df267a69271649aa81a512a51e7857cc418ba8740a12a50f4cf6887731263fc838143a61ee3504ef624b7e001f246742de2511f9b5bf77bf7f64fc47e25b21ab91e327649ffc40c697e8cc8e9577556cafa7fe153c4e2def849be9fe5f078e15f1586ad5e43a54836d0b11f92cab261e61f36bc5da95b4226fe2d25c6f8bf4aad4097c4cf2068f3c57b0958227181804eca2e73ecd9a88887483de156bbac542e1c86ed511ef02267bc8e3664c06964de4ae94772dfc8a3561d5bb18931d191f7c90e310651c656fc0e45bed932971c81ff1ae58ddc32eefda89aa447fbe4a76bdf2bc048f2fd5b62a21ce5f8c10974d1a01cd71c2c7d2ec3b5b93224f53ce15eb87ccafc5392547c4dbbf5ddf55493b8af146cb61295a900de561bb95aa2db54fd20a2ea213b2e3cfb2af029da82ecc1179f642e6536072094c2cc76b4e76fc1171bb54ef3a55fb641a648a60b202cd1fd08e1d060e93fa21373b1cecff098d9552c8029d82a45e32442a9378e2b8a07d49443266dcc54afcdd6a95a45ed2b4de90ad12638d6de2622f245b8efd355911961f1b3325adbed8f2219b9955deb70b72be5de05ccabbdc299dd5502a8342766a45b353c77e00bd6ba1312da1953bf820534cc4573f0a9113d188df91236198309d58bd692552ca0e2e9b8493c5fbb54a901528e453b3c451c3aaba6fa86629e85ae657d4283c2435e7e97204cf23abdbc35abea36fd892284888cb4f9597b9848bb920c79bc8eb3df2e3fc2b3f7325baa6aa69a9ffcb6a59624664317b25b51823264427a4db1de6b9bbf02dae7708754103b54f96e28374fbfe5c73244417be637f17c993fd1dde95f6d01a431b164cbac0c46527217e1264ca8eed98e44d88ceabf8ac0b14227db72047e835b50783ae058d37d8896358e7ac333dd15e7b25ca7f734764073fe4dfa847409eaeebba6be2d46db2da1fe8bab4244f38f5d82711c7e817e6bdb6471af2b73ff25c0d601ab0bd1a338b2d8f6537cfc834e17eb0199fdc499e11262c09f69477ad61356aa569b04fceb5da2162f2579e7c68deca5cef3957d8419e34d8b742e735e45dfdc70799524812ef32b4121f1623b20834a2d6ba7a722d177212f916723c394ab44025cdb5e7fc839abf266e7ce71dd9e6adac4fbb6fcfd7bda77d37a12b71ed96f44c4e9cfc9ab5dda08185ac8910a1b7f8568bd0be245cebee9468ae5bd0c4d28c55ab1428667ac5ee2d964ff444da43993e8bf94d89e884ab7f9f11915fa8de850a14d2bbce21e3134c767561d2bb4eb5579dd149cabb58ef623a89567c65c733bc8df491e86451927c23d378890c8ccf68afa7d94349766a061fdb21d018f92754bad0cdd55c2dff26cabff3afb403c7598d38c1bb3ba333dce6937c9bffb8adfb24fbe39dae8107320d9125091e59c85c357fd6b57b26cc7f89dee6f02c370bba70b44ea2e7de32baad36b81deac71ec83ed992de55a5ab68f573264fee35aa75c5f6492e98986f85edf87b60921764fc28203207ef324cd843c1f2e435f4945817af7c124949a844f15805cfc9523b04fea0b63b4678d3cc0768b6749572d250da9ea3db8cc6136131f5d7fed7ffe69bfc2c5ffba57be1abe91f5dc735f379bef515bf21e6bda6d7dfe89dacff94c836dc072e21f268b6618c30e21a5fbb39d9df437fe8eee9eac6684a23c8f75845d3c8529f9754f7b555b25c658fc4598977d139cd11fbf5c8ac4f7461f820bfdd7e7e1e72896e1593e91fbff03b30996a3e11d1896ba92ecc9295f5ae13f14106fe55898f77a54b88129badfe05ae2516fb2a4bf3c18c3a2433a5865dfb491a11d0a05d5f225ef59dbfe563e208677c23a97c913bda799ecef299ece2ad7fc82ffd3a7ff74bc26b4ca8cce9b967a2a17ba29817e2217d923093a013ef5605f3f5ee67c7b47f8ff257cf950a0d95edad8044ecaad3085a97551ac51ad47e764f9f52052663d8f156ed30904a3f543bbc31269027a7860aec93a9afefc8f853f5404a1637cb93f3a00b7740278a89c47dc50b69d73e524df0baac8364ff51ae65bad62644204336bd7a817b44e94b77ad6890fcc8bf890636ee94aef5172122eb8e50a9d09ecb696f9f9195719a57890fdcf879be669b8331c9e72447afe84a9c10ba03c2e5893ebb9670b168b35bde769f3fcffde62342a5aff4d1cd62afc4d8b54aa449d1136998ecb913c44faa7425d1e30336e3a5d6e14966fd209fe6b5bc0e3bfe2ef8851bc4bb763131bd6b6aba708249cfe8c476bf4451421cf622f199ac13b95e510fe30c9f0bab1d9a569ad9a07284fe0bd7f5b7a5e338732bbaaadb3ccf1509c684b0d07bb22b48ef27ad6be8aaf05434f20fcf5dfe4ef23792295b4685aece823400a238b7e72e11896c17a328c1c7259ca94f57efc8efbb075f0b564837504b4bfd2b96c192f6cc8976fc23698339d9278289f02e8bfe0e45ef623ac9abe05da93c69409e940a36e328c47e25d668be15a1931261f2026b426444f0d8471f6fc1039f22b2d4ec4a416493a59e5fa191095d8f4bdad38cc527ad26e3417ceace7d3946a188ca1d49e3b35caa7047c4e77ef34f9cd998aef910943507f77af2357acf88aef32769694dfabf4dc4b7b22cc6806b59ec67d0252d6f4dba5b83d6b010578c9d102d43b5183f8979c34f844935e75ce949528ffda2d573af12fb253a69447922f178e2be3bfe2ee8c293844e2226dfd81ba40b9315b40e577b13f853ea275e073cd6ea41f9d20ec333d40f5754de245c0b32e489689a3916288434ab5fc2e38b7914e311d6972ce0b3a16b7e45577de01ff30be2cdb7fe9dce790c7fd3b3a2428880778de83aace9bab32eb9465c512cfc69b4da71ade1757115be62442d79b044ba09cda4d6c96e9d3fd30a7d23f708bd6b826afac310418999f5914ea23c613a991226a51d7932497a33cf7730519bd1f247522bc56826fa8c43d4f05333f866aa71adcccbe82621b7b1ee786f3d890c210932a3eb7dc6131b884aee982672a314c3684cbc694a72e789ee3fc96efee23c4f4fb44657a2e55ee99acec90efc25293f243c46a49b2d099376b6a45df59acde9ffd6cdf3a2f2de62257cbd1f4893dbfa2cbf80cf25c524e6deede6d8c7280a9d0bd9f17c6613b5e39fb43b51a83265df0a5953ac0b6bec17d472e9a7b9fb23e347c12f3c4d64fc3778d72130110f6e25b11935db4bbdbe95844a986f7d82e2e6da2f7b9c7d419a24be78ba862f74cd9a4c212cd1890f010fdafb7cff65f72a49188f7e3ef3ecc118d0f97ee763facb6b5727cc5ee0ab9cb82742e1992c7db6636a40e58af501bae2dfd9d89d679774a69528ef2d733878b75a24a7df692f54dd9664905df558091e6b806386bd49969ed209ef8e0fd0c94152d13894be054427c6bb626eea2963e2f7ff6032d1c8c9257df36922e32597684acf5a7fc824a7c8bcf789ec8f543203bf902ede2bfcf5c6fc57d085b90fc9902c8f125d65a6909c68e1c2f0501a61e9c1147247d7fd94b85acd719de6259d69075e95a65b641ddaf5ecc9e1ccae1be254351e6d41fc6b4aaf7236e890f66f46ff7f41dfe5351bd2997caa775feb520b51c79ef3ac17d3b57d0b9ca99dc89616bc6b696d5d3b58f37ba455649027eff0ad1c848e515aeda032be01bdeb36c9f06ae43e6f1286bb7432e29de446e87897faeadbf0adbc9ade95201071d8045a91ebcfdad648b36156785e3cc02cdda74085bb7910166c9fb364766c77acf30aad0be15b820ea3025c72c8883dbae6335c9b2b96e1f478808cbbad7e76961db1178c6d4cfaec27a2c22a514987f6c08fee9257d2564e32cbffd6ee46c137ccab4f36d253fee3f6dd4011e965b162ab95ac62ef22d6bb36f932e76f724a54560a7d709eb5f2b78c0af91ae4c9caa227a433322675f750f0d5bf299db047e5956ee380c90f64df01f1e073d5b72a0985c48c097d25d8ed4bc2e2039ac3427502f170993fbe433452226e55129e05442a7203855ce4437e24b8b0a645126248dc9abbcf74200fcaf05b491d5dcc9dac92ddee49e7bc22344ee8fd576ece5d16e89b7da3cbd294bed16536f4acfd5735db22fae52d63fbd6d7c8faccf2217a76441f4abb80493b7036ebd8f340d6c70f78d7293a7c1caa3cb10caf7760d2244ceac024d0497e093a29fdc99190589668c4a3e083643a39a06f7e1e7cf5450d6b651c4d25c90a9264aa5422d5db963364550c2d20c2bc851021994d5204883026442b86097e5f10e73a25b95ba22bdc21adbfaef91269fd701ad12c676cf51d6177ce491b6dd1753709c7d43ba5337ba19df74adf709ba0123bb075e14d7a7375922a3cb7208d29a655d97f6b1f1e884e7e60c7bf17ecf836fabf4867b537e2d513c524e64136bc778d1d79227ee179a8698cfe2ea693127ddfb7c42eb1ab2f1a6fc4c4bc8d0bcce0e068f22af186597650ddb1b55703225396eb74fdd74a2543ffe51f9883d1fd85702eb2d4e784c889e34e4e4de409851a22a1919d28f416b8f0f76e0a822ae1ac4bdc9cf6d78b6ff9165019070f58cc52615be592be5b96b75c3bf84e7a41a2c78eb8c52a6dd6bb6e492eb2bff031e96a2b15f2d08589df32ef6a43ef4a6cc6dc17657cc2bb2cd698c64fda44c175d2c48c3656019375c0c4727bbfc1b7a7f87b96513f69ac1d7ef9cccda12d2922c4b5d64c134225aeee7edd2fe1b136ae4554b225c970e5b84adf29af4afbb8c5fcef346f86753bad13a2c715681832cd8465fd88a8e4047d7f10b9d9c9eb92ce110fd0bfcaee2c7b08d67a6fa7fea45dc088e33c6f6e5ffd5d0f24f1d9571fbb3f97e0efdacbbf954e92dc54e65d053ac9d17370026fb0e5788d51f72bf28431613af90ed6b95985b2ff22ff5a4192ccb46b1e732ec1c472e9aab0eb4624d3a78c08247b45698424bcbb21446edc0d613204edac49d6f7a1fb0eb33b7812c55f59cd2ce7cfb233c4df1f73cab47e15d9ade3b087249f8c3301de994ee8bc5fb31973c224d265ddd67b5c4d928ffcd28fb3abd0bfa8b3431bd6cfbb6398f809d9522c071e428ec4b3f62f633a19c3df15e9e434d24941efcae97a4f423da379577630a13df5a5675509785442577b7be60bd25d686e062f70cc3be2d5f367a4a712268c08c9d10a6862c89c2a5f13df3af40fe05e433c3724d97e4d8894e90c1b4424461b5bf524c48c31a314cbb4087e4e7eb7f9df54ffe3a801c94bc6c471eff125f435f3145bf4aa95ddb8325940b9e7de6483ac1f70e965459bd1fcc39decd66d08932fc4b4ee81897549af68b503f42ed7234ccc8e174a69e46dd2bb0e0bbc2be6ad58659061823823edd17350fe8a731b5c5a111211b2694923ed80c05c6c1dae1767dfd5ddc25f935427ed972cbe0d71a6a1d204963f242ae97ae266fe10afac894a46ee9dfe7f83ec8898fbcd573ff1b029ad985ca94a95a3f6a1044efa8db7c1e7c35d97ce2153781ed54ab4b8240f0f5177b640f30e49fa139dbd6192c5ecc8349f9b9fbd274d7d3f173ad13ec31a91afa0231be409d1fd3e617221b15fa113e85daf0926c2bb46496eea34a19326e8a4a936e34a33b276d72a4ca29a6b9723ce6dfc540ab1e8d53e590ccf1cbf252bbb4f9a2e5d77a1134281a9e2866cb55fd277befc112343fa16db2039f249a5f7ea3af2a74021c58ccb6ad801b1aab50c34564a315245b1c8de984eb45bec5aa58ae5d28bd57ee3ee73ba5824e59e42dcbd974812ebb76edcebd69f913df8e526f00b8b2efc04193f40cfbd32e71010d7ae91446fc0577f17e8a49e779cff93573f0f527e8c3a60d18539ca53a27d7aaed27c9550873d92aca01fb5144790252bc4df2d36ccf9786dff99cffc3571a3effc8db8d2172362b2831fb1842734f689837d11425ff4ce1357114982abbbc15edf24bc2ad667c5ece56a8c480769c31aca4a11f9d6fcfd09644acbc9ec842af89755cf891fa58d0ac587fcc53fea34af9e4616a317d2ba11f32b3774860d928119643c6c46588db10245ed13ef894e2c379529654598fca59389f6f788d15f877a39e477044cac722ae558b63ee1979f20bf82e73e9156edac7337db8a33f6c23322ecf985f4f8e26b6fc8102637844a9d503924da39cb67eed3bdb2d5467cab1cf3c89c75d6b5abbf4de29c8a9578d660c3c83b585b93b947ac75f06e61cefa8e2e986f58dc3bae16f42ff36addb92a49ba0c32c53283fb89972bf67ce5db9d1f93ace0ce1e73f425f4a1ab1afc5de809996212e5c96a874e72b51947c14681b73e91f18ff4fdde742aca8fd6ecac82def51d7460a192779ca14cc78bd95f7d54575ec313c554f240924324fa1766fbf2f111e8e4c8ddd079b1f7f784ae046a7ae4ea073bc410aa42d66f836767adcfc6be7bc6d9d80291f8c2176eeca7aed0773d612a81563c455eacf1aeba52ca807792eb91a497ce044629364b45e86410303923bec4984cd10df710d68974f0eaa0433a674335a1773554ef12eff0457e5ea093183f190799c2d7d67817cb932e7df765e8606f956daba05ffe409f1943969c102ab12254ea7227ee92e4c81cdec119cb12c681e539dd336dd063e65cb92344489e1066cf24dd5fe93ad4133911e64865313bb91232ca421d1234b36d2257aa2a6d44ee6d60a37cd23373faae6fe8e37b428f7fd08b347aeebbeabddfb86ecedefb27ed0bd54b74629bd4a17a971fd3f5be7053e8c2e6ab4f7897da8c35a1134877a931fda37705bff0582dc6195031df0af3ae16f6fe974af29fc0af56c9a449b54bdc317d86e99e662f5c9306c3f1a86fbad6bfae4fdf9bed109628824697e5bbaf7bc207f6c998b49325f30b9604815325351321df729d58f1e590c7bf534ba9d1d00a689c2da61922079c8df34a1285f5af31bc0ee520e7bbc1a25f908698bb7db291faba7a215b25ca77fe7dcbf2842cdf4c3081262cf3ce2a31a64598b4fcd4e449b019db4579025d7814342fabd772c157bf9f75e85bdbac509b58f3a5933ebf755e0a6bc1a7a4c7fc282f0bd3b86867bf106dfc126746bc89ec923564c70d38d783510b732ee25bec7ddc1295bc702f65d56763c5d1365c7fb14362fd705a051369c3f0d8c00f29d9b16bcd209f0b26f4ad9977f18cd66a669dbc2c3ba2852ac557b2e86b90f336c7294e7d885d71499e10efaa388e753f687e57ae99f543e55d1bc89329f1aed3826fe53c1fed60f21130b1ec95b1d009f1e13621de26fa5ee86c819f641687e8bf82c85ca9e444fd5e9510a16ffb2bdafb23c684b4e02d5befa0134811962b892ca993559f130f5fc2a7d17493c4ef9b7401097d58d2ea56eb9f639595c6d1b692bba1b4cd687c815ea6b4d32ee1597aa7733b751f4475e3c4a2174c1e88e37ce599e3bc12c9ad1b0499625e63e9c27de7ae0226f78177cd954e5e9107394074799a5f16643ccb93828c0ff2246a5ed2e7ee375b4b4c4b3129f2ae4f9cd9977652677ec7b97b67f47b1d7465d8dbce1316fb798bb4a939bc8e63e55d874a1f37f07211e722795227bb65461ae80b9d774b2cc5ccfa4ac449915a0fe14267b64437364913ad7da39ee827956fcf74f2c25a275d814fee67c2367d265d0be26c3bce81fdca5fdc2dc9b7d801dabaed478b714074f2c96749bc6b26767cc85b114cb8232464bcbf8f74024ab920bd6b941dfdb14f2c9b68aad93f5e7be0b4489ef4a099fc04cd6b05996e750ba2058f716eb9faf42b560544d7adea8f5d8fb4c4753ea35d32234df80232a42bd204d8fc925dc2f2a40b4cdee87f766097a4d5c469571dd5c00ad113e35a9b80e126ca14952862339a7dfb469a97f02e897791f68ebcf166d0bc60a5f82792139fe05e365d38cd4bb50e1fd7ee3d7f25cb8a31790c3912cfb11a1b325e30b9d8a1937ade4a303179127353f9fb4d0911ee6c27bcab03bdcbd0f85669f9132a76c53b3fc986d9b3bb083422d761e087fe88ce69445c699e7f739497e3b6c2b13cdb23649110d77ac81dc99c75ce5db03a90252e60924a8af4ea2b37038f4a9f0d5da5b372f2d76bf5d9ff60bef50f7de737c4f026e05d4c351fd90f5dd1284fa49fc4a3dbd0372cfb2fd2bd06817bf5126922797737c4bb3ac48fb9d783ced502e7624c4adaa5f3cd3fb97def4d17d63823e8e49ff6c95cf324845672a2a08ddaf103f8eacc9217dbd1267c7fa9e7f11475e1afd95639975ca372769c6f48c39fb87de2b4dfac0be71ba2932ee80448d07d97e9846e5f9891fb463be68a76692d588b697df73674288efec628fdd32ed39310f3923eaee61d5ea97d3585152f5dc889d275725535e85d62d1d3fe70afa4351e928dfe1c3089be2f9b04c274b2cc5b742edc57e031d8f173c4e3ad76ce6cc6461267bc85deb56b339e06cff05429e513d338b66a9f0c7c0b7bcbecc4d49ff2a35943a7e85778ae39ab15d141c9822e93cd3ef193bce64ed966443e29cb78e8bff9ab7b509d8bee390b9be4fb2b71e35e2635d2693730cd0f0b7defaa094fab26dc4c3b49293a413f70da53492899eebf10eb3e85d782799964e86e423db6795878fac4365fba43ffa9ddd06d1a4d9ceddc878c7f273df7d07126aec8935c738986d6cd36f0ae46e25939fde3ef124c3e823cb14e9de7fe0598709cb14fd7fa4b2d12f3d24b8c4838b3f0ae93c177364f2b2058e772d77933ff213af945c629f32ed685ebe247213ae910cfaaabcec55af023edc66bc84fc6a41c6cf3b4f35ada33a4eafe4efb32bd39ed6a611286ff5acee0139d652472c4e7f601efeb37616e325efbb970073ba2f572fe8d793736717690e8c198674fbc6be4eacabbf6609fccb426a863b94484494331390d9990a40b93c47dfac3bbc6ea839ca227e4d28d4837acc266dc27aa341f645cdfc11bcc5a1747162fc9febc28444cd6d903d924e05c9cbb4834f28d3c60b34f189357a6159625649b309dec696682544b9bbfd7ba82057b3eda847f30893d13d20e87126db1289750fc073242783fb16c9c636ffdd0ebe685b41cc8277f45e6df67bea66b6d73336d726327747e664c5efd21ed24d6e465028ad53a0c25ce287e617f9087fa786072e1cf898f3cfdf1d58fb43a5eba742efd0bd91a55b519af4933f9099ccb38f22ae830dc8f78e23ee82fca9a77aff6b4636f62159cebc48f559ee4a49b805fd1ed8156c33db0d64598906de2cfc0b948134685f444ed8ddd9ab06d824ab45c3688f96a2d64582c137932f544fc8c9ccd04cdad0afff70c1e884f60f7458fd89b6d5d899a99cc51b927ae73982fe89b3e6987e77e66934ee3d4b31b57a6b3b9a1bf8a323ed74e77439d6233e09856c0c432211b7e9137dcd33ff22023ef9a2a261bf0ae83ec8a33d5546b31ce65beae6f4878fa6be275ef743d92ba3a37f635b2d2894ae88a73de354b13b619d7cca9402b9c33ddc89bb891a54ff6fe896a370d5425647af5cc26b75e2fdb64ff277da9021ee68b29a3a77f1ff65d1d5dc0745207e4bee404f2f7ffc6dedfe2ec379addddd48c7aae1b2ab9337748d45e0973b1cd5689bdb86fe8aa375c177492ca934bc504f5f1f0691226a19f9a60d22f6212fa128d42677460429a2d643cc99e6b60625a572541e52768c263d2ba66224943b4a949d4f140ba488ff86c1fd1c53959e9676c8fc093c25ec73ad9938e312199f240af9e10efeaab4dc63a8c79794deb12ccab41cafced6f18738baadcd903b9420dae72cc6402c7189620ed1e58620b58579fe801c61e4fb100625fa8166a2707f4fd5f08954d983227d4123b0f8a8c6f3ace07ffa4cf3a50df8a4d76a84aad037c90453a517992da27b0e3c78a89ad4fc284676b8b2e7c054bb71837914c901f95f0acb9e5f0ec59e714be261d928d77b0d61f70bdb74407672ce1412722e5198d7dba7f253b7ec8753e7e8ff6d325e47c9f50c96204592b8eace665826ce65a661d906217a475a023f4f4a22b73e5476ec9f5bdb07a5ab4cb327721132c34ff7fc51504c473fafa77b1a69435af352a5d78f6954d62b68934e269114caa84097b31bfb8661cbda2e2dcccaae448309de4bf7e6d325ef2eaf3a23cb1dee8d18a97f94dcf19eb5d12d3ba46fc248d2e7e87e849f008139da453b479dd908dc8156d679a0321dec65fb114a10b3bd2bb3a5c8b93b76033fe9056d8a575ee1a24596ee9fc621f1dbeda15ad44cadc0bc926ce2f1ed2b9bb8046a80a47af2297b57c2daff80f7f4257a1eb979e6c09d8c1757cd31ff5e2d92c8b2fad462b07adaba151ab23f47fe8f867badad7cabdae957719b5705605513b30b9673a510f64e808899cbba7bc064cd27ac615c993da8e3c49b3564413fef22f9848c3fbec90fedb794021f22ff17a7d42c29ff25c21ad2d8dbef492bf264daa8fdad00be2570df669c1ab25715ef6710113da5f24eb7d87d0e8c17bdda76ffae649bb09195d8273059fdb72ec177ccb67a4c58db94228bb455425da9513a92d21abe0d1bfa3baeec65fd2a756fc2f539f60e22e821f4278f6087e16b11b6377ce16f36fb2bf7bee80fefa46fd2b2253cc4a817d42f833265dba420f8177592e5127e8c2c2bbd23e772bcfbaf06e3c3e6ac28a8ae3cc34d1bb189356c8e44a238cdfaa09730cfe8d7482b4d307ef5aee36d3a7ebf6e6befc316cf506e3e0c52f0fbf23f010ac32dacd0dad00f8a06fdbf36f64d337120f96e4ab8cfd1ed1076b337be8b158e2fc16da996633b2cd22d39b8ef3173ff3dd9c67b9ded099af0897365d17ce7e94288b65ad2e34e6cddaf18c3e214eb493aca17dff4832f10039785741a6d8ec4ee5670e163049d10bc9e1d6ba5fb14f3a3a8919329ecf33b11957c4bb5a3b3ec889ea5d56816298b056c8b6cc1d3029e60f19269af748ef380913819583b879fec635d444296764bbff8ae797292591f1442d244d98877137d13563914b3777ba77dcdd318b7607e8f029ffa2f37c439569935029e55f640555d4ef65bd0a33fae6df84c80f21bda24f968af41bbff05f981bc37ad75afd104b6032d50c8f293069866c09e49dd27feb90d5c89d54e254c07e902ad79027afac3d92ccba90ae94898cc754509127c4a57fe97ba5f58c17be28e3d37c61f375d18d6cc673606274f2a37ed534c7ce7251599ebcf996d9739a7b35a66fd347cde71bf2eb982a125dcb1e131e4dba2dfd9ce7ade61ff920bf42d7705a7ee3ded19f567cf3e21d79232d7a4868f4dd29f1ad12e99f471957fed482962c33084ba483dffaf75c6728e47d70c4669eb9abe08f59ea14dd99e6217c6076e84631b1fec28cc915f356c793470c93eb90f7255a31fbc51c63427f7faffd20e75a13d40993824a7943e549cabb163b989cab3c89529e3d36cfb463b6c8913824b9f61e7cf0951d54383782a3591c410d558eea615ab03461de057f0a1050afbce8bf40847e8fe896f91b9e6344d4714d9830321f74152fdd27c914a73e79787689ee1eb90317499377bf973df831e9772f9c35106cf92dea5cdade11caefc86fbb0dd6c086d01fd1f7e677ad20e3973a436caef186392a1f8bb95eb77e90f374932ffa3f5759bf4023f6e886b4ab1be65db47f6e421f897561020ae7dcf5f22dd1c96d52a975c398ecf8bb2685bc7a9127ec2ddd282637c8168c750de661fd514c44ef7ac7550bd689e3be017db2dadf08178e2dd67d58f0392a267987be65d39789ab72564d2fbf214cfaf49be964ed9f42b4b18a0a97357143ae229afb333acf2bf4e12c115778a46f9af670c9dc65be222cbac86fbb45b77eb6d43c71cbb3d0e17b892571b929e4c91bdd7f3b9b4767358c0fc42b8f7c1598c4e9a631168c1ed43c7b4e31b9d3badfb5d9273aa19165fc0898041f249fb52779f25f60629a30d769fcd0f7db726e2abdf7167580968b12f99755754c80c807ae59250b7d046987f4b92a14985c885457bdeb17f4b2af9c8b6c793adf356704e2ea7d28efeae51317e6d280d7d0a7d38efd24cd744812b349483c913cefe553dafbf5a00f6f916dba9737e8f336c4bb6eb487598f7e6f692f5f420f965c5b41e40bf139b6b3dee0476d249c0bf92bb4c3f791e9b59774ec4a71e1895a25d627499e8c31df54ecf8799ab7029bb14398cc559e08fd129dfc23a61567d2d8e2298e264f6e099f55529995ca79d6592632bb2ee9d30dcdcbbda02f076182ee0fc0039870c6505d250bd34b8dce972b2f4fa11fdd72877dc1c42fb9cb1eaa482452c57b7bcf67442b6342e58a6cb83da2c60df1c8a16267dee269d6f72592e80bcf94720939df23845e1d4f09331b6ba17c8b2311339cc71b7205bb212352eae11f204f9698626d5472a5f7361798672dd3d9105d33267b21974866febe061f648beca5b9f65433fbe42daf66c7ff45ffae64a6167d4fc66440f8ddd377fd89123ea95c94fa8689cc8630442c4fd8cdb83b07e1b2613a0106fb8283e444f033d0c21a78946136f19a3556fdae5dbae65df485b43c79ce7428fb47a2b092dbb8259def3d59e87de2705cc19f667471649d6398f7be4998aca00b73edcd97eb680607c7783e9333462d1449d731e449ec62cb36e3be6f93d43bccd7d0bb4c8e5ca94fd8a6379558ab8747e826e470afb59bad4ed4229b91319925d5f1c0c4ddbad9ffa27fd7029ae198ae35cf3f61de754fd7fc27c89222a5089d9c0a9d249dd3f9ba1c937cdfb03ce1fa3841c0e489f885815253628df47c99f84c8368a547f2e4c357dc96e4e654bbaca93e05fba7e13ee9d32aa4753d122f6059729715e32c5271da658b011d31997b5de69764af9cb9a97ae31843c9bf53dd91335551f7bcced2de374c293cbbace773d827a91cb18caf3ea69c312647c0e42ee8c2cfa1575415137f4bf92bf1aee85b39859c9be4cb04933ccc9d9b2694024c902321984cb2ef50cb98caf9ef904734d15aae4d62a1705f07e62bdc51a8225204a81c490ccbdd103f6be6af644bdee41784dd29bde6c84ef9c9eb7e421a6e0f99a9b1520e9e78e03e755c077cedf7e83ce7b0d2a2af384eb19b127acfb4237e885a1624852a74def524fa5886575beaf7a586c924659cdf54872e7ce487b4bf33d4cd0f124bd17adc499cb1c46798b508935be4dc99af5eed1374f7b80e7482dec22a4f2af4d9453ab14e51715af90274b2c978c6d92161f2a198a49a97d5092e15938f9867a7daff5dfeeda482b46295eff4fb8bb10026bfaa7735b0ebe7b4172bacdf7a9211d963a6b3334237dbccbcf24a39da272df85db68156cad25d15dd0932e22933f66cb897ec9623fc21d785915b2a9f1e679fe8e5c6d1f58ddaf171ee7dc7e5dc93c357f319514094f0d7210a2c71c67bde718890deede47775b423e499fb2419bf828cbfc3649a5360b2c97f5279a2be7af3082f7536363f5ad3f7ec903c79803c093deec26e5a29ef92caebd3d097161635b2ed46fe816438fb1739e3f138e71fceda8644116f243c5dfbf990e4f61e099507e2c53dd4db723d521735083dce8243c5af4e3acd2ccf31660b6d542fd32c30bc03f17cc2a18bfc3dee4f2099137c265554407c2aa75ec2cbccd629d7fa4d329b1920bd523bee99bedd8438df4865c755c2bd6c8ec0357128e203880edc25354197d6470253ce867987eca63924bcc9f84b5f296092abbf2bf6ef5a60cd549eb07df240d77b55d082ad127b15aa4a994e5649073cb6e91dd90d0fb4bf72baf265ff4c1c6c8e9ab9a1c914c8fa7d44b46e4843fb746cfbddd119df4a165bd64754fe2aeb587f14ad1bad86ac14cd5d097e4f8e9c3844156be8315145bd6257fbaa66faae0a7cfd1bf5d6f3feabc2d7c218fd00c5b4b31d739f2f92c2b77e90f85462feb0ce69246bfd28e7d84b8d7d2b9adf25985474f2dc1ec978c6e404baf09df6ef623a59d27efc8b49f4ad881632cb64c699f0ae55c2bb229d7c6b3dbcf0aeaf4caa0facea24236a5efb9cfe5f97287899cf1069ecb3ef0b52fe46fcf538e27adf37d2703db4cb6bcd336c699561cbba3a699f149b01549c076c1992b5d0c33eceddce90555986f58e3eba8efd5ac2b946a829938e2473741f1759d2541fe40de28cb779d5958235f2d766bc210ef59b371513e9edc17422137f79f6dc15ba5cbc122645bd8b302179b2de89698d12ad4b30914e2986c9285468a5c8c4088a54cc8d92ac15c95ff090b0f44fe8ac9664e9d548eabf2598a8af05475de26f23ee95a9575dba80d4c295cf9436d269f361127d1a015699219edf4dd21f46b477eb8258a53398694dadd8279fd889ab501764deae5bb22c1ee82c5e692ff712797255e05eccbbba44279c49c098a4ba70c88344068c53fbc42c14e25d7ee99e7774e1714225b2f8db3126bdec803019472c6c5e502251c49267fe95d4eee07d77f99464da8b23fd9eac891aad6fd2c4d6cab9be900bb90f4d8c63296b7fedd87f277db13197267438b7aee87142503a4d33edf919b224122bd2fa2172fdc94abb855660c78b476589bc9525ea95d70113b34fb833589d34e11bda9f5759b4e153cdab075f3dd3096372a736a3d5988a1d3f461ee40378974e40c1fa3726b16ece2cdb3163e2787efc01e940e38275123997e4a88bc78b3ddd1b8b6829dfeeb29fc83d72bf1eb2f16ae8b9097fa46ac31cffdd47be1d598ea40f6c1df70fe5cc54e9772a53e49c763ccda48b84cd78907cc8c244219dde98e4aed4c0a338ce35d5da7ab1dee5bbcf70a682c914de15ae11b54a2df17575b85b184981dcf53597a8af71ad41c004f58c2ce3fd3eec93dbd0e74efaaddc47dea598dc261d219977e5ffc0640c3c662ae3c537fc0d4cf649c68fb330ffa4d0ad6ba53194b9f665d3d87988a04f5c85f4accc2fe99a37d1ad009840ebba911a07d18561e17f918d7242ff8febb3cad07eeae04375c89626fcc3a23189a4d038709656cb31266bc5738b486957ab50d0a925b33afe15a227338d642d903fcc472b4c4cb1de055d64485c92ed5bf54bd49a9a6437593f08f73790f19cd931e55a07c5649df4f6603a29b9877c95770d11c584e964bde35b4923bf33d0097a982b264c27aba4db63da754574afa9ceaefb4eeaa6e42aed93a655233aa991b4784626e406b9a96a39b2872858905f6499736d4c075aec06fa7055e2b8e8ec318177658bdd2f7b9ef5eea954d321bbb82ab162a9230182bcdf45df9866d623e947b37024be3842e6dd0fe87c019b2cd69976914f5176772483f75db580c695e6de59f5e93530198177dd871c6ea69445ec152598804e748680d009f1f7f53fe8645cd08479d7881d55224c467f30b14792e135d339ce9f0926a2a1b6dd09e73e38aeb1fecdbffd35e7411adfd2988a54a1dcb08d42bceb081173c91ea94197657d0b9a16a2b565ed2864b1c70c9471a1326422bd23f8af903bc11cef4279dc26e49d2f80ca0f28e303b1c52f54d62ec1b9d2595aad8c3be2fe1295ecbb27e5561cf735cd2be6dc5dc13e79452fa43b95f1b157d4abf62c18e64dff4d989cea8c20fe7d99bf13ef5affb11953fb64063b7e013aee199dc40e9005742c2a3fc6a7cc7673e2e88ab4498fdc27fe7544761757fe6ed8f7051f641db9dc5d92f575d4cdad398395e4c92dc720384754666569dd544d78179df106995b5bb536d4df924975f004d4211d87ea160b4356ea4473ebc5a29aa9163f479c81e5fb073253a749f59ce4477027f0113ad8dd06cd375af1860be7dcdd7bae2369a92e7c98ccdab8b7c9d8c4c15f61c7c7281bdb8c4c27f37fca9379f091ce542bac074c2aa1a6334efeb53e453fc1bf32471d7a9a4f5dce1e883af6f31fa208a19337f61103916ea8d7fae54cee7cc83d1ee96c680f82d7d4759609d3894d26bf005f936a879ac86e50cf5a657d59bd0899fa560423e9b62092f04b277e48c464044cd8923f4784b15821df26693224ca6e9046bf17fcc0669f98cda81d86412723e8d0f7e8df65b39b16ea5b613b9e653cd3c92dac45912937bb3ec8503b372bd88c53f30b673c8b6294ad623cab804945cf72011e304795733aa9bc4ad7f3dd1f93bd55e70ed9a868bc93fe0452f3cb75a65c3fc75d56dc17690197c4196e64bf8232cab84eaa6fb12e289d3e90bf858e048c02ec728b324a3e5e980415f68ee4de2c54bf64fae628d63b62f00bce618327c77ad46b35b63f233abecd9b2ef5375e0549df0f944298d0deaba92e7ca0bd079fa10b339d2c91df3524f9f9ea7fd407297ad7ca37fff8852533751ce864897dbf505d785f3009937803266a87553457628ee9750b17ba47082a744d8e883e9837cd884a66e859702814c2bc8b7b7b689efda13b234c987bf5d0af8e27c495d54a99684ebcca77a1028928aa075f7825f3a80d7427e918c5f4227c77020fd797e64348bf764cd943bc77866f6e1da0cdfb88ca39d20b6fdd19710bf5a1841a3ae3647db54f984ed84b57e738237897f58a1279c2b3364aae917f0293d8a393fd5dbb32deba484419aff20457e6d078d76e7fe780494579f344399e79bc2c5bb4ebf6d09576ce7d2438eaa89d3cf8d6457f8f43794cfacd2fd9f2eb8c67f75c8163d96446eda8a68fc6dafb74acf39b82a52f9ef8d0e96bab997a2be5a9dfca034c7a226a822c11b2e451e5d04cb2235ac44387a427d65ccfbd6596efd82f20625a97da27790d79c9779805f814722416c8831cc3b7d2019d444d18f2a4e85bd9a931b54c8eb9f2ae0178d7d866d284c94dd152b1498bd22b7506af9756c65b749c76dbb5eb6bad83d1095797b225ffa0bd0b509d4dd6cbb75bd2399145a2bdd3433c248b934d93d95bc9b4c049b0eeabb034c56f6cf325446b5fa82778a616fc3b3019434f8e93e36deadf13498023922547ea55e905ee9572b281c619ef492af6a0c9dfa3bbb0d4334a5ebdcc6e12bfb06162bcab87f84951ef322a99aa7c170b2562b227bc4bbde3d65578eb6cc6c33a588e13484b9b0d182ba4a52b91d82773b254bea06d49e52f1e092fe33e6aeedbd1d9643c8709f2247811c71101abc48e939ec21c15ad9883e66c98c46a19ab55b6b98713892e22b6580e1e15cb821c38ee6dc51d1ca7a449c5b9e4d705496298880f92fd63b52497e825d43a54559eb08cfff13d9dcd788b494145de9523a3a9188f9fa9af9ee5499fa8704ff651cc81486945bdf6329de90376d7ca5d64db44aa30c5ec13d5ceb9473662f41740a1ab9d70d00187635da8c5e69a469ed3d785def5872a0a1eae782b4c09d6ff2dddd4569aeb6c5d2f8c374b57ac89588c9025299db4d06d6599f30e6ea0b3c720601275ae482757cce7a00b2bef0af319c30479c104baf0896ac1b73a79eeaf3cb15e2b53a515d9490b78e3fa985d3b96f84971064d902f917f8d51f914bba9c57aaa3a71e639d98456abb5565ffda164db4b3f35962e8efb4489e5d836eb1d39748a4b8803ab4fd8aaae6d1657b6d569699944265d9847016d40bae67c67b15319e2da1cbd4fac4596250397fb12f784cce75a3b66885c07442207bb66dec539e98a89cd678cbd0725bfeb93e8e45565bccecd644cfef82047cabd668a89eac274361cfbddcbb8afcdeaef5ca0509365a8b04e730acff72a588edbe04fbff17be8eeffccfa707e46f4c1be952fa022321f7a31eb02eeda2db2075a4d951463f889d3aaf7b4c747ac3cb18ad2b278fb138f30d30ac71aa58bd732b39e58a7f00755038d584e573b7b74e5fc2b7fc93beeb58048d4830741c2489dd610325ef52ee477a539122c4ff6d88e0f7a97c9933bd8f1cf85fa138b32a676bce8865c13c41918e6ef0ad3992c9e98f4ae5f691ddd047d40a287a5acfedba9e3e93fdc07477adddda18bc497f48c12292fbc8ca868ea78273c207f2d992c94a5bd3baa21b2689d3fac6f54d29f30f055999dba425e44ec1c77ca950da8cc8a1a97f88307c4793ef3a6afe61bd23b7bdabf6350c024ce6086f79e7814db8c1dc44ff60326e83c18fc5d4fa856ed5a0eb7ca931ff79860928377a579a9120d9da1834f1df6c93e4f0fd999d1549c6656d4bee638fb98b16031a73a69263354ff869a6c7454fbd24e84e81e85fe5dbf44e3efa485b7939e36b11abb1ae23371b65aac418dc726efcc7bfd032be65325fc08750df09e25fd88acc2011d86f39fbc052a31491efd5b57051b5e72b81913464eecf82395f136e3ac0a3ae138a3e95d778a0c61e2ab7fe449d12f6c39776bf0ae035a63eb3314aa40b49234b15862affa49a1cb5de03374dff3e39c33f15807fbcdc7d2793060225d6c49fb224af9265bed9d6ce3295091ae11d5843642b676568eb14ddd21965d6f88580500cb92656613aad8c2158cebd9eeccd201c966aed0cdfc2f5d5febc66d59a983204b628604ebc243c77d1d7b2a4fc4b722b94443993b07dee5c0bbee92eab99eef16e824cd25d23a07a0320db15f9ee03a49666c247452a017b11da593d758654a126b52de7fcf75f2daab73cefd70acfba0f64f45bf4e7f4c96e51cbeaf3ae220a19e54f4ec34eeab3e15eb4b20f388310fd5c5aebb2bd5812d274778f526786ee2f4bf06a2bd7bb47786244b9c1ba003f4204125e222cfdbab2c4f6e984e90b7629848e4f75ef356e05b1179a23e48c5c473ae538a492a4d22269fc0a403de352e4c94b53ad2b5c997a017af829765a6f37c932ecc40654a5af1483cc43c75d1718f54d8280113ee8973ec3896f28cfe4cb52047b48f5d22d9ab0926db44ff903eabb13b94c5a86799559a2c4457404557b36099704e4485a8b94ab66209f5c276d5e3f43feb19d553ef7d0f792b15c73d9fae204f0ec2ac8d76b44f108f6ff8579227a70113d6bb8a9870cf823433751a2c5dee6359cf3a98752c36e30e65a493cd0af274018de62799581aa3e3ec9fcafd13777f665a717d7f6cfdeea40e95f461f4ab77a7f42a671775c4679fd9fce04d9237570dfa7135ca12f5db5b94277676358b98630a558d65a65649c3a4bb7f24eb9d6c13b2dedbda6150e8a49dc8f541f25b722486c084e5c94dc84d7d496708b01d5fa013f1ae903cc9b31493a07745092fb9440b603200e2f3ac302328a1994d72b40e15750b64c2fc8083c7390c366db946df952329b055b88b0174e1aeca149d4d437a684e94c2964a5be38e629faa6f00d95ad5b4b22e2b4e4b5f072df85b6bc6676ac17f62c6c658a20005ff16e706b30e7ce6b39cbbedf5339b962572be171ec7699976cf31ad1bb219af8109db2733f5ad689d16cf10709f7e9f30794756ea6db0e37fdc61cabbe0179e2752debc748c09db8c07a4ffa431ad9db9be856c9d54ff9a20f3609d25393e62cd81871fd15e7c366b0572e501d1df8a4a1699dac49d0e36747e5dc4b0b46f085df93ef18337e4d5e7ee89bee52648940421bcbfa23afa229cd79afb7bc0c76f7333eb994d88c7f439da29a3bc41d2ec3ef4738ebdd3d2a98c3dd4f01b3ec4f16867f580c9b5f6c099dbfc7899dd041f641398dc1a26a88b79f75bd7cece0b988c136962bc2bd089f0ae2c5459471e16349ed4db623575ccb5bfb2955eaf6db4c1210d6a24034f0413d8f77df64c06698f894184c917f761f3634ca3b1ce2b9bace1f74893e6f8fe135153c371feced6781957c5634f77d0336293adb443e20cfafd16f18d6d4223d126613ff09ca4dd7efe8259d9d6392df684ea24e848b78228fdaf60c78f8c4ed4df653d0b4a41c63f0826c1b3c29874f3056913e7059b31edb6127d2b2bcdef3ae06ee7bb1cab104f8c5d668d5f480dc41c79c669d43158df5c49453be71a7305be9dce7012ab5e280539df63d2074afe9368a519a602f4fd08fee56b7794d7e8cc36fe4cf531f690ecc30b5b264e32a3bdcbfd224c96c8f9b01c9986c9b231f6ce481e92b67aec6e69bf2f120ab09934d2412dceff332a52ef17fbbb1cc75734875b73890616fbc55cec27bfef3b8a89d5ce5dd27139a593609f4469b2d419bd12fbe5cee01f22e37724fb36f2af604347fef5a3d254247df016261ede29d7f9f3a44ce9c5c293afdd99faec872a53ce20553e0915644e81d67ad91371984fae63cc5ffc0d49c83374bf7359cf5d92aecdf382af65122021942112ba424f8f36622fc5b940217b9ee4721571de0efdb79b2cf6e71a043406f86d7858d741c996b87203a29306f4ae1bedc36d13693a5acf48f609e449b780498fcee02f9da471df98df25bc8b3d9c13899fc46e59814e0ad3ca0bdeaf6f74911a6b2e5598ee6319d89a21df76cf74f538fe3867eb5e279e0da11b0f3173f92cdfd0f34ffe0c763d5737705ecb1e66662dc9aa6bf0fc75f42ce8ba99df13cae35c32e2132784ca23a882397f4ba7a3350bda96755579701de2942dd773d7f0cc0f0a3caaa75d528bfcab93d8f8d7d085d94fcfbc6b5fe3278a89faeaf768afec27f113c524ff17ef9a26d264a69d5067ea5b61bdebc3b2520bd27d9b60a3f51f494c456c028ee5a1378e6a60d19f6b11289ec07ce54b98098bae6ba8163ec3a4339e23040d8c7bae7a9923d7ca1ef0bd4a84ca1b69fb153ff3177e409fcf9315a6a45dff82175e6322204f68bc47cf07cccadc990fdf55aec513ca785e7033af92747a52df565b7f1b4dd824d94116657f27d5857ddd4fe87f990f92e38c92c16d3623d3495d7897e8c2b8ff3726a9366c94b240bd521f984ccc660c71c6e8cd487b9ac9b3eb44d67f41d65bec35588fa219876e9a0392ad5724ed497ab0e705f8f479123330e1998da73c57c0b7e90aefd37e1c73e70eb7a0abe8fc39ea20b9bfdcb16f83ff613a36e4d427c98523e2ee6dd5f6e294139945de542bf18eae5d93acf67d7fcd7d62954a76672dc7595a29bd9865cf7472935749c63792f8495bfcc2c2bb58ef2299736098683cfe8e6cc8f21f4c4c135e249e61d18539ce08195fb00e63b7b94d384aa58a4ecb569fc6145ec975e060658b118648157b016f891f3f42d6638f735d04e69bea9459e661b4f33f5dd3d5c0a73836714d16e62faa7a0f18ab7c4a1435265e37264a3921b9fa84fac3baea144d9dd0946668cb4c0d9e0f5ccfabf4bf7de0596dd5aa229f2ace34eb24afc14f0cfb843189f2c47c90c1b7e23e691775589ea0e2fcd9e8c41d2498e41ad39a07bfca6e5efd21ad89e51245cd2bda26894f769b4e940f91f04ffc87efe0f548b4af10b39dc0a67ea43dc57d99be316f00b63e4f84e0de46ee0b7da7e674ed2a900ac774be3c0bed933857c3af082ba6903e7cca3c5ff3181df32447cc66301ae7b27e8f7c7def89e77fd2a7d6dc374b2ced74ded37ea89d845222ff8a734f92e823498d1bb74f78d49477c5fe5d6a33fa01634274d2d53e001f419e7cba4a41ef1a15eab0978177b13c61def56435587ff461ab5a4b7b006f13ef86f9252586f49d59b59b499549a8879b68f66993aed1dab1ee044a9199689c918fc59ac0a3afe3af4b74ce43f7ebab39d309f765e6d9e403f7eeb87e9cbba33554cbaaa95cb7ccad28d907244716e027bd7c4a88d81cd95ec024f2aff8db3aa247db4430a9b82e30816f0576bc4d75b897de83817775436f06d5bb7c27c524f02ea390a5e22275bf5c13748c3aadd4622fc48e8257c3ec10be1fd03947efc68fe6817e432bd85acea2f46fb6cc13f58965f01eecb3b6eb473a118da79ecaa4eb47f7487619c7baaeb32374ccca7ddf2fc95a79a3bdf842dff500def59ace24171962146213ae5b9022ac27dc13d28eb4df2748f64e22294c9ab7776effb21dd53e715dcc4daf6bcf02a9665c609a167a0fc207f99b2f489e9c2a8d48ecf7877857e58f7d52f476599c91e409eb0f52f7bb6b8b14a57d96d67b6e50936b3efc95d6a9b076f7e36406ac64c459068445dd27a8fe9980db34e85c1fe9ac5e512330722c4bae891632f70b3a69d07973778a166aee16844689a539b25d040fb1d4cd7f524fbad00b8d1c903d322754ebee0d38a69844caf83b6fb938ffc430b9a6abdfcd7f4027d7a14727cb13cbe13e239e7aed8f4cc6871e3877fee40f9d588d96f9842dce203912878ef3207f8a51f81063147dd86825762cdd068ba512bc93d2b5e1c7f8571627c495a3b40f9c8cefa7e8c233d07af34bf4b4265c106be5e78e498eb7b37d58780dd4314ef13732c5b71e64486367b5c9c2cf3dcba757b2856ac85c4a2df47472439c68d62970b268db6b2c98b8e02130412e51889f98dea5f24431897382d8b7f2171393f1c6bb96e034224f06e8bb0e59b02b4b40039b02b5c45ce1d4432bf731bb6ae12e124f6e35c8fc49c8198ac864d8f5d324b7ba0dfb4de6ba77e59a4be569324fd9b030ed374e9969a29fe2235dab23d20f3aa471cf71ed3baa6975547a477a482793b7124a8936a3e577f10c3dce17ac696eea4c311928ef822e4c547e50e05d1cd33af907ef1a67b19ad1aae7c48eef1b2629af2ac8f86d8288d5ac27da7140329d2e3f438da7e5c797538f8b69ca852555a70ef8487da32c877c47a9d2763a0dbea953958d77d5c3bdc4106fb243cfb5ae5cf9724452a49d5c6943239de96bf331db9a699fda8ee659e9236f85a74867e05db76176d38bc47e914b34261b6c1830d19c3bc893939c2da95d4cd24a07cbde94d82fe765167857a2f5a69909d63720a597482bdb24974264cb4f16331faa7f9191de114a2bcac90c0954291a7d8042847305ca3019625e46b349fad9137bc4c8de79252b74012f8decfe5ed8fbede06d3134acb2b1554064d766647fd743fe02bf70b4195f4225366ae788f3b21dffa3b3b40226c4bb222612d31a25550e69ce5d3d601274e13f38a49ee1d8a333f67888764caa87c944be5521bfb41a727fc566c902ef3274a6a0970c1492f22b54a58b0c01cd08af33ab5df0e8d1953a76eff90cd165d282ff5c67bbef26bcaa55e05da92d1f23f13aa986348e439fd37f6904fb44a63386591bac770193aefa56a4169bedf88e1bfe912753a59365e841227a579ff507c2c43afb460e163ac7163c5ed5e4f9825c893116a5179909c17a58c8d40e19c113abed0d7412294628e5af0c8992bd9ea051070df1ac734f57a684c8d92362978d443eb493653491e21151918e5ea60b043f3dea982af91abcaba1f689f4541b68cf67e9dff5a9bccb30115d78fe0713ab9c4b31b1fcae3edb3eecef8a767c921b11314933878a12267a60fe15915ca2567dab573df54f06fb3e5439486e632de15e35ed7c5e53ff7b3d4b23552cd1f90ade91bced9036cd3dc06b6e9df5923856dcf7ad2c4e578e9874c371a494bf9c4bfc5dc4bbfc52e9249db5217146d827ec31509bf13978bc6e0993d70226a7593a1f6811240a67fd8a3ce138c8b7c619531fe4a68041915ee22c861d5ac9e23400ebd8f2235c0c3b3db5ec23a5082733b99e854e13ce3011fa503e66d2837b9673df8057779d9fb93b92af73b6ee0b7874828edb0dd64b7c47770793549674b298972af6499b30c9e117bea6ffeb35bfeb52eb7e2537f529f8853f0a987cffc1a498993ad3de951ba90922de35911cba148f9483156cfa221f8bd413254d35f0c04aa8f492ce0e5bb1bdf59a4f8c7a0a52646afc4b342e951da6fb8a37ab03e9b1ef5e3ccfa03fe55e85d9217bbf826f3e5ee34811b1eb4dccbe33546c627c44c3e4493f89697d1126f7b0199f3497e852f3eacb324340f5ae6eac31c5eff51f4c6422a351c9678835464cc6f05585cc15e35e09bda41379aa85e78a48453d7a1de47eeca7f3037fc134b37e27b5d0d763fa470b76aa5d3147696aa64303d7e89ebef333e9bb23749c3e72dce1a81b2c9ca85145eed4d0acfa56a093b446be1be8aab3234b069adf855a7992f15fc4bb6e4127a5e0ef6a17f42ec8933c899f0826f9caddffb1e3a35ff85335af4f60c2bc6b2e71f5340bd2b225fef0aabf8fe2ecb7385f7ca391976dc0d8222e159ddb55c5f4ddb6729586685141b3aa6535ddd303d4aaf335ba42a7e59cae0c779daaf992db732fccdd95a3c5286f2bb3aee7ad2c5a92f1f546b84fb1334db94827d6510dba3059a13c23a819f2ead7455d38b14f52dfcaa99f119ddcffc30739950a872cf641e69e6aa2778dc58eb71d9ef0a15d4e55cd6ce2ebbf56d48eab994d7f8fda5cec4f81a5deca1aae7cd038b5c293fb06dcd2f93fa917a34d74c1f1ee01215175cfd22144a929f60a8edcc9e8c31089b99016a78f1d575a6a2dc6d9a5c6b58c73099d0cf20b779b3d86fcae3ce9645b86de054c609f681ea44e03643ae9044cce35f61bb352676ac72f21e34deffac936696e5722e3375951ef8d14914e564aa58b6162d1c91d4dc034e6403f1bad4f643ec5677f4b48945031385329cab1f91c5dad38621b3c5dd0c61aca075b09274ab128e64b34128a89d2de389e50cb2060625422baf022afe455a3931d4cd40789d8d922e85d86c9acc0bbce559e98deb50cdab0e85d5744271cbdfd4935d942a471975e22d55493fba4e3877a2da3d44fad9aa22d93f8a1f51d6259ba204ff4da47ad2c5829512bdef541dad58f76bee54bc4ba20f3e847f95e9428b11f91f586bc214c8684c9bdea5dd65df85231e14eb603b6e3f3459027c0841ecd0a32fe5c75e17942294b9527a831254cd6c044aa08d689cdf85fc913e980197b05456b3f9dae94cec24ab5eae8574e2baf8ad994696fbba97a90832f1878996f256642c8e3885671a5a858be574bb9568a8855071522f1e0a5d7f0774d888abb44274f6a9f3c87598032bbe9dadd00933bd582e18bfc23e34f0b9af0422b9abe421f8903a39334f2fbc7cb12f7711183b24a8d58d3b39b459a6252d58ceff859d5f0f74997da60f1676abf4cc5820c54e3421cab9eecffe809b31897bd6a1319a38fac1b74816ea09374c26f5a717a65f2c43fe43f5c5da67e61899f589c7129b9a9fe487997fa850513ffe15e7778d71c395e1113596bd5859f59ef2ae46a6f03f7dae55be99e8f13e0b685eb9abe167bd41915448a8a55f1a117a7d149f051c6ae05cab70257ab273eafe8b5af2558a5fec946663d206be199d45a8c3efc3437d2fa71ab1dcf335b214fae74d6469cc06cf9c2437f14fd5dd2971f327eeb6b7ff2bbe6051f64c4649071c6f75830899c2bbdff2ff858bcc2dbe275569dabd8c7b15c40263cebc6c95fc5dac8b14be3f862c138f3b898072cf85b0a3e31ac6642319156a25c31cfbee90531eedb0992c4f2558c7bddb1bf2be79e448d44c6bfa8bfeb35f483ac87bc159b95f09c5f16308932de505986b896f8ea0f80c9572ae193f849e2914faebce110672427d5ba21ba9864ab86bf0a5db70b95f0c5feda96ed12bdf813b5f1b3c40fe0cc9b9f70b3483bc57ce1a2a48f5914bbf662713a79ec0c29982cf2b5eba1b2ff5aeb4fc43e21cea5b5736fea5be98267d9e279161faef48fd8ef5cf52ee93866985c1126ccbb3e0b3a57e2bb4ad030ebbd1c6441928f9a5084c99270c59d4d4eae5a9d6fa8762f1baf2ac4bb8a31af69f0186716f98ddefca88da9ad522b6063112fd1c3620f9cb426a5e87b347962934ccd3eb921797218ea4ff6d46694787590f1fec9d591572f98f4e5b683c9393049ab4fcc6a344cf681c957b4e10b9c6b1b34a46ab66bab6cc3b54f6547ac70d7df05a95e4d91087d3d8a7d84adbb4416bc62d37f795f4cbaa827a65ee05ea9944ff565c3a4a11a97ad620e516abf9bee75cb3912ae813c48c9179e6bec57ecf8a5c67e19931f70ad7ec8f122def547c69b2c99ea8429b9ff466f8f921bc0075649aaaf8bdc6ab3834194eadb843eac62aba88599c4d06593c8ad236ae053913ec605fa9886f8a3f0afa9ea60462dd3f04c2d890b17d188dab2d98ea1cb5d12dd8a5492f6f430646e08930ef719a5d71ba88f7f8a191266c7c30759e71c6e2062eb23bff4ee0f9d981d6f32fe5331c924d38aaedd427b0e6e767c5d51a74d1f25f552ca8352adaabcb3a236550d71dfb47b87c98c2c4452b2a005db7de6266a393af351465912b4e56690f0119346c0257a831b1af38a51955666550e8344ca6b7604e8648f78d36d3e875e60f178899e84f8893b719fee06983c073c80c90e9dc45ca25982c8176a36c619f7b878a1ff1a3009364a51c78a365e51cf8d523dea55e5426d6852179cf0ad71b043d22ecf290659880effe55c99e54e88c69558f775d5b962fe44aa0dc72aba28dfdb89848f9649b417e576c353e67deeaee003ba55bfb0444fcc663cf39257ffed4f029d983c39f8c3bbc621bbcb10e1fb0aa2bf378c37624fd631359525bbbedf28430c9bb47790f55f89e8a4d50f63f59c8ce333417a5884be888bc552424c3850c934588f41e22798a49664232092c64f0c9134ff6e50c044b35544be67f7aec3f3a651b75e93f9f16a9f68176e7483dc837dc2983c2b228a49febba30b4f77e86401547eb4cf588f2b3de8bffe68fcb7a86ba57451fdc773913e944f39990993d8844609b16f5ac896180734d28caf49c0206a5cd380904b90310b325dcda017a75a704428daeeb10a48acc5b47341aa09333247a4e5e67e447f3ba6579f54c63fabde558257f8cc9da097ed879fed6072417452fea30ba7957332cfe81bf5556550e23149a05682c9362b5aeb31b2955a22a9fe5b4e785592d9956475859e692a4312b4920c897405bf4ad0aea662331a26d1ae0f1eb07a8156ba89848f7d245a3b3c2b46b12cebd1bad95e834eee9cf767f92bc9f707c47578d2c68176830cd58c984873e29aee01f3e33f02e7eae57dbff2d302261f7ff2ed164044fa2f6c20531e7882077da3c43a512c526d376212edf8d427520db4b0936b97f64b8bd8040e350e592c916f99be153225638c3ec4bd34ff2bb11641098a4f3750478c64595cbea5b67b9a3d1cab4dd24c3bd6819f48521cb99bec189ee4abec512dc6b966dc2dc2e4a693fc3be7496bab44eb124c7cc4c4ad42fc6491f8bb8477ad34e2c7d382f658c7269aac27f221f579a45a5472cd4d4a2b478ad9a75992859a856b9e66414e13393e459781f4ca07bd573359a6a9f511bcf5b52c66a616118853af5b59cc8748338b52147a05ed37785330ff9aa7211d9105ff8c4fe8d3b38fe05c71a683563a389e0f71edf6fd39cfe8562ac1224ceea33c712bf45b49738545be7364dcfad7721cb64552ac4d48976937dca95ed8caac3ebca73a491ff41dbf7b5f7bc25d65e97c8a6b5dfdc43361eb4697bc76839bac3b4479e37b6c923b3f92d7ee886bdce9bad5fb47baf1742e5edca54d7e3fe1c66b0f8f6967a39fdf1e2441093d30f771db477f80c374110d1ca9a67beff7f2dc7ff912bda78d78e81dfdb727c4db2ca255d1aa5ff640b65ddf57113dd9a593fb8477fda2bb6ea48fa5ce54ff563a91685f193e0bb655066e49982f60a3aec34ca2a576421a706f5089c022aa36402cf6cd5f79aed76f7bde2b57b248deb579e1f708550c8fb48fdaa8ec91e7077806479e3f85a79f9de06f8ff0795774ccfd284674cf7df14ff8595a7cc4cfb7a52a9b3e9bf5d4275fa2359463e2eb4dd44e3ce1f9213f83477cccb9fbf4b7b48ef8fbd0fdff5dd8913535ce23dff76fe8dd950f18606a9f9800930472392401de248e19ae90008181aafdefdba7ba65d8d9ea8a2ddb8a096af5dd6addd2afc45f067f917e2bfee6275ca7047f739f7c5c9c8b7c4631d02dd973ee12a884b5ae158c0bbc23ccc03a79030aa901860435e00464bcd3bb42754595e9d4a7f22c18d19de275af58aa9352e1ca8309ccab39cdc0539e49326fce8182b6651f1684441f8c212024c90a5c109f4558c8ae070baa567d0c1f068ce372be077a25d0de42ea471e8071086ca3f75b2b29ef90eecf1f5c7dc3bc624e72b5453e8d3e6657c14cbd264fe00eb6e97a47eed06e9630cf7e137fc1d68ae6590df70fe9bc82cf0e6632c207be43efc5bf7419128c7f0d638291e511f132c4c9a6acf9d5b527e459219c60c5e71887a984a6cd18e22568c3ab229aa592442afbe48849f6d8664faeaeb2aab274aeb2e674e724c39d54d92c5797d895d75d1f4472b085f1e0a221b61e51ed3bdd95b753e94ade8ef87575fd8fc640fa599732dd9679ad4544d47f550b5f255b9038e0098d37660230307f9c54b66a1eadf93973419aa39cdb35664f3de56f204e2ed225f984879946805ae2f7f8989e2cf63b7e0189f243225a2cd99f45e362aca88f8bfd5a6a1bba5c535f8fd0ad15fa9497571d56658ca5f4145b4c45ad4c8d5cdda9c7c5592ba525ff507c4cf2cbea879cd1ed6c94cad6a59496a3faba2cbf4523bfe5aa3a5baf22de2ec208f22dabc0adf50a74edc959d8037bb19de548ad38a1b5d8c78613f8a776a9ea3663644dd2ddf689d75558a6db96b6e15796a36965459d82c6ba9fb292b6d771b5659990669df00e403976f5855d68fe131f5f540fbcd194695e96e9a8e37f9435e1721dbcf7078fc4d7c53ac69cf48416e9045c41e258f86b0bb921e7ac846e1c81b5e8f916e2046bd9566e7fc60058c198fc82d6813eb3be55d91e73ccb3de9d8ded3de9e6956ad62abfcbbe42f38254ce771b9c2dee6c6ef38ae46c07cb98f7fe758bde36677b19fde84af64939e72d8bde72b6cab5bc3e679eaa44889637912cb313e16a53e257acc5b54843db46c92a74b2e46a6a244dbe8186760816bcd20863644c5ad7326126ddabd209524a585305c717c1c84bd6b734bb4e67f943f0965b7305429533499bf9d66667e7516f8cb5ad51a071cf7637673cfa98b9e66b35f3b0ca18bafa0f9bab757dbcd028a1f42d6a66b67918ebac7f7b98675de794b4e816ebc99973e555d8940d784ebb74cf0827888b5a003d2defe9178c75349c0056623ca2f56c6bb1dfdff2ce337e05a846beb3d78ff70675b3dd38b9786299a3e71cac50fa3b2496e131a3d1706d75abd24be8b9bee7fc47552f67fef895a19e223c0ec65297c063c2f65e74d143b18826ce4e9a89a49f13b0ae2518219cf0eea55c0792b3b7f74083fe8ebbb1138d307d8c192f540d12fdc9471e27997f9924310f70e65b99eb7b2c382f6c490bce43def13872b90bd993eefc50de2f38c854a13b2df87c5fcb2efd6a0d4f8909abfae0a5c3f00bbaa89dce35c99c6a2216eb2ccb0ec3c89c6cc433b23237698df4b6c3097a8b7f524df497740b1ceaa6c0c80971ae76ea048ce05f201e8c4e48d25f540f1927d982f71e75e64aa4a93ac99a47b6e334d79f8e12bc26db6be48f984790f1a0b9ef1a61f299a226172c03dbaf73539f61b93ab7acf9307274e17704d06adaa32c2fbc5f61e63c09270e27a7e21960eb7f93e8e45c5602ede71ab6bfc16aee9187beeda884f152c769fc1d36c3cfea05a589c9f88c15dc574a72a8b3166b356b5ccce8f39c97b1f57221576f50ef9354a1e938ded4757cc973a64ea6886e410dc7721c382c345719da7a6aa506d658fd6a91da61639cb9d5442c12f3df4cc826516e35a7f3dcf1ac53d17f5b54357353ea0daaefb14f366d8dbb83c7bec4b1860e2b6c2d1ea75e7804dd377ec60960e58276f47c93eada59ff75f9088e260a8db353b43a9fe63f73fe8e68a2b6ee807b1c553e774739d1b193d77ed4d956386a508297d6ea5bd79af24a21a3aa19f718398e7592713275f4c19e33d5b1668485b9d822e72249d09b81f8d89238d6a3d8efb83aab06ab6416b628026f76620d7caba69d197be12c9e55abf0ca9810df4ac87412c9a67fac743f3f8b2e3523441635b5ca4b83ac0d99fc2d7990661ef8bcf6a6b6ea3341952ecc6ae80b566c1d88796f8f2badf3efabfe8e0baa507ae0f32c73a9da7126efc7f4edd3824218984608235403655bf2b6b5b61dd048ba020df84fc608024b9311d5810ca95dd530eeb1c0c907530d6125547b60d5734501f59afb9583c69b0679fef3987a0dc8c657c7ba2f73fda8d2ca71be32809701261dd4d7dc8c6134abd09874183a1ad0c893496fb5ef26992af8ea847c27cca3a6a2dfaaa66b58505fb261e25cfcc62df6154b8de70bcaa4079c806cbf8bad402b1bb29d580b4ed0ef88156ce7a11b5a2033a26241ecf85825c69198ca1fd515f0b027da6daf521ac9dcc9f6c9533e6f33bbb4874d2bb5ca4b7c9c65adc757bbec1730ccde0b6f3bf82a8db6c7988efbb8f211815aa2809e33a95fff244b09d36e6dfc0d0f678489b960e25ca4f986f8f0115a8e46d07baf7b935f87ddf4270cd37b7c148ca83785bc8e541f6a9e8ec23798fd3f0007d1cb13c40270b3c85c8cae2368c6bb540367477425f30df9d5c9c6e74b601e62167259e76a42156bfa798cb53aa9cd78afa3969cc8f890ca678dd24c44269f14929a6942f5d8898badcc9dddc732e294b4daf31c6b3993080bea55aceb664e45b564b7f2f11bf91c137c70751272ad7fe205adfd39201bd1f9519042a87aed3a6e024676414bda86d1ff287997e0e10340b142580bb87321d62d18646ea0358e2ddbdfd62c8d3f8d69edc66c9ca35d751ecfbc0e308fbb65b08da8afee176a7b8a4d3e815a72d32c8da724a3991ee632f653a7bdcea58516b897d69e125ad977d592eb8d8c811cd502891ec5077c2e7ee06558c5f3f04c759d7b12e11de6480953c82cb6e3417a0d9d88bad38dc788d7bb846b2596fe192bafc0c516602f9e864bac75145a40950b980fdf2827e30d74f1738a982c3856227ae022474d9280c44b88baf5095f2d248af2c851167a03728047d25f16f2e48d222c1c6db9903673893779c6c78b220673495c649fe092609ffc8297149bd9a7cfbe70ff7d3a1ed3073d2263ba774ca33c16382058ca714ec7a5acb3ae695deb7b3c4dddf4947e80657e22d9a723a1138af5c6eff11534b04eba4c305a30e36f181fa6fd7a9b513093312658022e16b6abe76a0a7ff73d76c234a67808da5b8aeff11dcfe10c600b01b48b436b251452d0c63303f4dfe23be5ddb803f04eb0231f69d353bdb3939661933fd0ae8a9ed437f7869e0c608b11c4be3f32c05bf0f8c4477d82d730a64f11f7f2c17ed760e9bdc46bbc4777b9cf0bdf954f481ff101c6f91e643656d59df10aeb8c931b596332049b719022fcceadb8570d40974a34f73f3c0ebec089407115c32d7cffa0da8a67e92aadd32bcc833ff0f7d7691077011e05caf682ce7adc9533035e2dd27e7c0358c87d7efe467717f254fbd31379a677e14aae111eed1b781fda5d3edb15df89dd02daee88678357026e9d00bcd299aa81c2791fe084ceafd41e46f4b80f8bfd986679c719fc0d03d0878f61ae6225e469750bb6204af1a476c95fe9e4a348a18a4c5970fc01ba5817f8ca6ef89eae81125e406b88a9137fc411c012cecbf88ba00733a607c0572339e2b9473db1dda3ab5ea3c708bf8b20eff825dffad5007cfa07fec77bfae07b467c07dbd0921ef22ebc7f206768519bffb6eba56fb47ee93770a0019ea53580f301bd61803332d27d7a066d3a66487cc5cf7b40431f40b5d3f81c9f4033ba118ee5a4c8df712212277acc883fff35e0deb86dac1d16ff498b84b518af41dbeb021c0274e1afde878d304deb304588f7784d4f36d20a78e80ace5dba5a73df7408fd37a80fb4e23d50e19abf0fed437adb061ef10af713a5ab29f6821f887d56d077435a9771056afd0aff72a216ddabe88d2bee83ff18fd3afa9b781f7f15fd4eea43efc23ed813a61c3c15409e1d57d25e09cf3e432e4d3cfb8cb9b5f26fbc022e7a08bf72183e70078af02d5c8116710bd6e107cdf184112cf6fffe5fde1599c79558c9dc8ce5cb3d4818ace4bf256b5eb892db1565302ca9c5790a2c030f68a512662ccc456262d6c09cb20c8e2527ed4ae4668b9ecce57bfcaea548d6b19caf2403428f4b69ed50f6428b3c1adc9ed39ab53edd6d519bf31b96949bd8a74c387cae3dfaf29e1d5e57157e4b2ec521e54dac2847e25072296a5a4fb2077007c0ad3d383fc115b42877a70e4baaf2f21338ffb2baae2e458244e6474d1af91a275ea6786de013de909ef60272450fedc6d93f69bbbbe5957da3fde949b35ff906eddd6e0270874ff78a6f5cfcef7ee186eff2198f7f8135819ed7c5dd357dff96644653267c890fc2c97ffefdafff0264ecd95d kled.h kled.h kled.h kled.h sispmctl-3.1/src/Makefile.in0000664000200200017500000005411511664772151014534 0ustar petepete# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ bin_PROGRAMS = sispmctl$(EXEEXT) subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(install_sh) -d CONFIG_HEADER = $(top_builddir)/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \ "$(DESTDIR)$(pkgdata1dir)" "$(DESTDIR)$(pkgdata2dir)" PROGRAMS = $(bin_PROGRAMS) am__sispmctl_SOURCES_DIST = sispm_ctl.c nethelp.c main.c socket.c \ sispm_ctl.h nethelp.h socket.h main.h @WEBLESSCOND_FALSE@am_sispmctl_OBJECTS = sispm_ctl.$(OBJEXT) \ @WEBLESSCOND_FALSE@ nethelp.$(OBJEXT) main.$(OBJEXT) \ @WEBLESSCOND_FALSE@ socket.$(OBJEXT) @WEBLESSCOND_TRUE@am_sispmctl_OBJECTS = sispm_ctl.$(OBJEXT) \ @WEBLESSCOND_TRUE@ main.$(OBJEXT) sispmctl_OBJECTS = $(am_sispmctl_OBJECTS) sispmctl_LDADD = $(LDADD) DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) depcomp = $(SHELL) $(top_srcdir)/admin/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ SOURCES = $(sispmctl_SOURCES) DIST_SOURCES = $(am__sispmctl_SOURCES_DIST) am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' man1dir = $(mandir)/man1 NROFF = nroff MANS = $(man_MANS) DATA = $(pkgdata1_DATA) $(pkgdata2_DATA) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) @WEBLESSCOND_FALSE@pkgdatadir = $(datadir)/httpd/$(PACKAGE) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINDADDR = @BINDADDR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ HAVELIBUSB = @HAVELIBUSB@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WEBDIR = @WEBDIR@ WEBLESS = @WEBLESS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ EXTRA_DIST = web1/index.html web1/off1.html web1/off3.html web1/on1.html web1/on3.html web1/status0.png web1/style.css web1/logo.png web1/off2.html web1/off4.html web1/on2.html web1/on4.html web1/status1.png \ web2/index.html web2/off1.html web2/off3.html web2/on1.html web2/on3.html web2/style.css web2/logo.png web2/off2.html web2/off4.html web2/on2.html web2/on4.html web2/off.gif web2/on.gif web2/onoff.gif\ sispmctl.1 @WEBLESSCOND_FALSE@AM_CFLAGS = -Wall -DWEBDIR="\"@WEBDIR@\"" -DBINDADDR="\"@BINDADDR@\"" -DDATADIR="\"$(datadir)/httpd/$(PACKAGE)/doc\"" @WEBLESSCOND_TRUE@AM_CFLAGS = -Wall -DWEBLESS=@WEBLESS@ @WEBLESSCOND_FALSE@sispmctl_SOURCES = sispm_ctl.c nethelp.c main.c socket.c sispm_ctl.h nethelp.h socket.h main.h @WEBLESSCOND_TRUE@sispmctl_SOURCES = sispm_ctl.c main.c sispm_ctl.h main.h @WEBLESSCOND_FALSE@pkgdata1dir = $(datadir)/httpd/$(PACKAGE)/skin1 @WEBLESSCOND_FALSE@pkgdata2dir = $(datadir)/httpd/$(PACKAGE)/skin2 @WEBLESSCOND_FALSE@pkgdata1_DATA = web1/index.html web1/logo.png web1/off1.html web1/off2.html web1/off3.html web1/off4.html web1/on1.html web1/on2.html web1/on3.html web1/on4.html web1/status0.png web1/status1.png web1/style.css @WEBLESSCOND_FALSE@pkgdata2_DATA = web2/index.html web2/logo.png web2/off1.html web2/off2.html web2/off3.html web2/off4.html web2/off.gif web2/on1.html web2/on2.html web2/on3.html web2/on4.html web2/on.gif web2/onoff.gif web2/style.css man_MANS = sispmctl.1 INCLUDES = $(all_includes) AM_LDFLAGS = $(all_libraries) all: all-am .SUFFIXES: .SUFFIXES: .c .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p; \ then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) sispmctl$(EXEEXT): $(sispmctl_OBJECTS) $(sispmctl_DEPENDENCIES) @rm -f sispmctl$(EXEEXT) $(LINK) $(sispmctl_OBJECTS) $(sispmctl_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nethelp.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sispm_ctl.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/socket.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` install-man1: $(man_MANS) @$(NORMAL_INSTALL) test -z "$(man1dir)" || $(MKDIR_P) "$(DESTDIR)$(man1dir)" @list=''; test -n "$(man1dir)" || exit 0; \ { for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | while read p; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; echo "$$p"; \ done | \ sed -e 'n;s,.*/,,;p;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,' | \ sed 'N;N;s,\n, ,g' | { \ list=; while read file base inst; do \ if test "$$base" = "$$inst"; then list="$$list $$file"; else \ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst" || exit $$?; \ fi; \ done; \ for i in $$list; do echo "$$i"; done | $(am__base_list) | \ while read files; do \ test -z "$$files" || { \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(man1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(man1dir)" || exit $$?; }; \ done; } uninstall-man1: @$(NORMAL_UNINSTALL) @list=''; test -n "$(man1dir)" || exit 0; \ files=`{ for i in $$list; do echo "$$i"; done; \ l2='$(man_MANS)'; for i in $$l2; do echo "$$i"; done | \ sed -n '/\.1[a-z]*$$/p'; \ } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \ -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \ test -z "$$files" || { \ echo " ( cd '$(DESTDIR)$(man1dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(man1dir)" && rm -f $$files; } install-pkgdata1DATA: $(pkgdata1_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdata1dir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdata1dir)" @list='$(pkgdata1_DATA)'; test -n "$(pkgdata1dir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdata1dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdata1dir)" || exit $$?; \ done uninstall-pkgdata1DATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata1_DATA)'; test -n "$(pkgdata1dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdata1dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdata1dir)" && rm -f $$files install-pkgdata2DATA: $(pkgdata2_DATA) @$(NORMAL_INSTALL) test -z "$(pkgdata2dir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdata2dir)" @list='$(pkgdata2_DATA)'; test -n "$(pkgdata2dir)" || list=; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgdata2dir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgdata2dir)" || exit $$?; \ done uninstall-pkgdata2DATA: @$(NORMAL_UNINSTALL) @list='$(pkgdata2_DATA)'; test -n "$(pkgdata2dir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ test -n "$$files" || exit 0; \ echo " ( cd '$(DESTDIR)$(pkgdata2dir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(pkgdata2dir)" && rm -f $$files ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @list='$(MANS)'; if test -n "$$list"; then \ list=`for p in $$list; do \ if test -f $$p; then d=; else d="$(srcdir)/"; fi; \ if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \ if test -n "$$list" && \ grep 'ab help2man is required to generate this page' $$list >/dev/null; then \ echo "error: found man pages containing the \`missing help2man' replacement text:" >&2; \ grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/ /' >&2; \ echo " to fix them, install help2man, remove and regenerate the man pages;" >&2; \ echo " typically \`make maintainer-clean' will remove them" >&2; \ exit 1; \ else :; fi; \ else :; fi @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) $(MANS) $(DATA) installdirs: for dir in "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" "$(DESTDIR)$(pkgdata1dir)" "$(DESTDIR)$(pkgdata2dir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-data-local install-man install-pkgdata1DATA \ install-pkgdata2DATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-man1 install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS uninstall-local uninstall-man \ uninstall-pkgdata1DATA uninstall-pkgdata2DATA uninstall-man: uninstall-man1 .MAKE: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ clean-generic ctags distclean distclean-compile \ distclean-generic distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-binPROGRAMS \ install-data install-data-am install-data-local install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-man1 install-pdf install-pdf-am install-pkgdata1DATA \ install-pkgdata2DATA install-ps install-ps-am install-strip \ installcheck installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \ uninstall-am uninstall-binPROGRAMS uninstall-local \ uninstall-man uninstall-man1 uninstall-pkgdata1DATA \ uninstall-pkgdata2DATA install-data-local: @WEBLESSCOND_FALSE@ test -z "$(DESTDIR)$(datadir)/httpd/$(PACKAGE)" || mkdir -p -- "$(DESTDIR)$(datadir)/httpd/$(PACKAGE)" @WEBLESSCOND_FALSE@ test -z "$(DESTDIR)$(datadir)/httpd/$(PACKAGE)/skin1" || mkdir -p -- "$(DESTDIR)$(datadir)/httpd/$(PACKAGE)/skin1" @WEBLESSCOND_FALSE@ if test ! -e $(DESTDIR)$(datadir)/httpd/$(PACKAGE)/doc ; then \ @WEBLESSCOND_FALSE@ cd $(DESTDIR)$(datadir)/httpd/$(PACKAGE) && ln -s skin1 doc ; \ @WEBLESSCOND_FALSE@ fi uninstall-local: rm -f $(DESTDIR)$(datadir)/httpd/$(PACKAGE)/doc rm -rf $(DESTDIR)$(datadir)/httpd/$(PACKAGE)/skin1 rm -rf $(DESTDIR)$(datadir)/httpd/$(PACKAGE)/skin2 rm -rf $(DESTDIR)$(datadir)/httpd/$(PACKAGE) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: sispmctl-3.1/src/Makefile.am0000664000200200017500000000401411664771076014521 0ustar petepetebin_PROGRAMS = sispmctl EXTRA_DIST = web1/index.html web1/off1.html web1/off3.html web1/on1.html web1/on3.html web1/status0.png web1/style.css web1/logo.png web1/off2.html web1/off4.html web1/on2.html web1/on4.html web1/status1.png \ web2/index.html web2/off1.html web2/off3.html web2/on1.html web2/on3.html web2/style.css web2/logo.png web2/off2.html web2/off4.html web2/on2.html web2/on4.html web2/off.gif web2/on.gif web2/onoff.gif\ sispmctl.1 if WEBLESSCOND AM_CFLAGS=-Wall -DWEBLESS=@WEBLESS@ sispmctl_SOURCES = sispm_ctl.c main.c sispm_ctl.h main.h else AM_CFLAGS=-Wall -DWEBDIR="\"@WEBDIR@\"" -DBINDADDR="\"@BINDADDR@\"" -DDATADIR="\"$(datadir)/httpd/$(PACKAGE)/doc\"" pkgdatadir = $(datadir)/httpd/$(PACKAGE) pkgdata1dir = $(datadir)/httpd/$(PACKAGE)/skin1 pkgdata2dir = $(datadir)/httpd/$(PACKAGE)/skin2 sispmctl_SOURCES = sispm_ctl.c nethelp.c main.c socket.c sispm_ctl.h nethelp.h socket.h main.h pkgdata1_DATA = web1/index.html web1/logo.png web1/off1.html web1/off2.html web1/off3.html web1/off4.html web1/on1.html web1/on2.html web1/on3.html web1/on4.html web1/status0.png web1/status1.png web1/style.css pkgdata2_DATA = web2/index.html web2/logo.png web2/off1.html web2/off2.html web2/off3.html web2/off4.html web2/off.gif web2/on1.html web2/on2.html web2/on3.html web2/on4.html web2/on.gif web2/onoff.gif web2/style.css endif man_MANS = sispmctl.1 INCLUDES= $(all_includes) AM_LDFLAGS = $(all_libraries) install-data-local: if WEBLESSCOND else test -z "$(DESTDIR)$(datadir)/httpd/$(PACKAGE)" || mkdir -p -- "$(DESTDIR)$(datadir)/httpd/$(PACKAGE)" test -z "$(DESTDIR)$(datadir)/httpd/$(PACKAGE)/skin1" || mkdir -p -- "$(DESTDIR)$(datadir)/httpd/$(PACKAGE)/skin1" if test ! -e $(DESTDIR)$(datadir)/httpd/$(PACKAGE)/doc ; then \ cd $(DESTDIR)$(datadir)/httpd/$(PACKAGE) && ln -s skin1 doc ; \ fi endif uninstall-local: rm -f $(DESTDIR)$(datadir)/httpd/$(PACKAGE)/doc rm -rf $(DESTDIR)$(datadir)/httpd/$(PACKAGE)/skin1 rm -rf $(DESTDIR)$(datadir)/httpd/$(PACKAGE)/skin2 rm -rf $(DESTDIR)$(datadir)/httpd/$(PACKAGE) sispmctl-3.1/src/main.c0000664000200200017500000006366111664771076013572 0ustar petepete/* SisPM.c Controls the GEMBIRD Silver Shield PM USB outlet device (C) 2004-2011, Mondrian Nuessle, Computer Architecture Group, University of Mannheim, Germany (C) 2005, Andreas Neuper, Germany (C) 2010, Olivier Matheret, France, for the plannification part This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA nuessle@uni-mannheim.de aneuper@web.de */ #include #include #include #include #include #define __USE_XOPEN #include #include #include #include #include #include #include #include #include "sispm_ctl.h" #include "socket.h" #include "main.h" #include "config.h" #ifndef MSG_NOSIGNAL #include #endif #define BSIZE 65536 char* homedir=0; extern int errno; int debug=0; int verbose=1; #ifndef WEBLESS void daemonize() { /* Our process ID and Session ID */ pid_t pid, sid; /* Fork off the parent process */ pid = fork(); if (pid < 0) exit(EXIT_FAILURE); /* If we got a good PID, then we can exit the parent process. */ if (pid > 0) exit(EXIT_SUCCESS); /* Change the file mode mask */ umask(0); /* Create a new SID for the child process */ sid = setsid(); if (sid < 0) /* Log the failure */ exit(EXIT_FAILURE); /* Change the current working directory */ if ((chdir("/var/tmp")) < 0) /* Log the failure */ exit(EXIT_FAILURE); /* Close out the standard file descriptors */ close(STDIN_FILENO); close(STDOUT_FILENO); close(STDERR_FILENO); } #endif #ifndef WEBLESS void process(int out ,char *request, struct usb_device *dev, int devnum) { char xbuffer[BSIZE+2]; char filename[1024]; char *ptr = NULL; FILE *in = NULL; long length = 0; long lastpos = 0; long remlen = 0; usb_dev_handle *udev; unsigned int id; //product id of current device char *retvalue = NULL; if (debug) fprintf(stderr,"\nRequested is (%s)\n",request); // extract the filename if (strchr(request,'\n') != NULL) { memset(filename, 0, 1023); strncpy(filename, strchr(request,' ')+1, strchr(request,'\n')-request); ptr = strchr(filename, ' '); if (ptr != NULL) *ptr = 0; } // avoid to read other directories, %-codes are not evalutated ptr = strrchr(filename,'/'); if (ptr != NULL) ptr++; else ptr = filename; if (strlen(ptr) == 0) ptr="index.html"; if (debug) { fprintf(stderr,"\nrequested filename(%s)\n", filename); fprintf(stderr,"resulting filename(%s)\n", ptr); fprintf(stderr,"change directory to (%s)\n", homedir); } if (chdir(homedir) != 0) { sprintf(xbuffer, "HTTP/1.1 4%02d Bad request\nServer: SisPM\nContent-Type: text/html\n\n" "\n\n4%02d Bad Defaults\n" "\n

Bad Defaults

\n

%s

\n\n", errno,errno,strerror(errno)); send(out,xbuffer,strlen(xbuffer),0); return; } if (debug) fprintf(stderr,"\nopen file(%s)\n",ptr); in = fopen(ptr,"r"); if (in == NULL) { sprintf(xbuffer, "HTTP/1.1 4%02d Bad request\nServer: SisPM\nContent-Type: text/html\n\n" "\n\n4%02d Bad Request\n" "\n

Bad Request

\n

%s

\n\n", errno,errno,strerror(errno)); send(out,xbuffer,strlen(xbuffer),0); return; } /* get device-handle/-id */ udev = get_handle(dev); id = get_id(dev); if (udev == NULL) fprintf(stderr, "No access to Gembird #%d USB device %s\n", devnum, dev->filename ); else if (verbose) printf("Accessing Gembird #%d USB device %s\n", devnum, dev->filename ); lastpos = ftell(in); retvalue = fgets(xbuffer, BSIZE-1, in); assert((retvalue != NULL) || feof(in)); remlen = length = ftell(in) - lastpos; lastpos = ftell(in); while (!feof(in)) { char *mrk = xbuffer; char *ptr = xbuffer; /* search for: * $$exec(0)?.1.:.2.$$ to execute command(#) * $$stat(2)?.1.:.2.$$ to evaluate status(#) */ for (mrk = ptr = xbuffer; (ptr-xbuffer) < length; ptr++) { if (*ptr=='$' && ptr[1]=='$' && (ptr[2]=='e' || ptr[2]=='s'|| ptr[2]=='o')) { /* * $$exec(1)?select:forget$$ * ^cmd ^pos ^trm * ^ptr ^num ^neg */ char *cmd=&ptr[2]; char *num=strchr(cmd,'('); char *pos=strchr(num?num:cmd,'?'); char *neg=strchr(pos?pos:cmd,':'); char *trm=strchr(neg?neg:cmd,'$'); if (debug) { fprintf(stderr,"%p\n%p\n%p\n%p\n%p\n%p\n",cmd,num,pos,neg,trm,ptr); fprintf(stderr,"%s%s%s%s%s%s",cmd,num,pos,neg,trm,ptr); } if (trm != NULL) { assert(("Command-Format: $$exec(#)?select:forget$$ ERROR at #",num!=NULL)); assert(("Command-Format: $$exec(#)?select:forget$$ ERROR at ?",pos!=NULL)); assert(("Command-Format: $$exec(#)?select:forget$$ ERROR at :",neg!=NULL)); // if( (ptr=strchr(neg,'$')) == NULL ) ptr=cmd; else *ptr=0; // *pos=*neg=0; num++; pos++; neg++; send(out,mrk,ptr-mrk,0); remlen = remlen - (ptr - mrk); mrk=ptr; if (strncasecmp(cmd,"on(",3)==0) { if (debug) fprintf(stderr,"\nON(%s)\n",num); if (sispm_switch_on(udev,id,atoi(num)) !=0) send(out,pos,neg-pos-1,0); else send(out,neg,trm-neg,0); } else if (strncasecmp(cmd,"off(",4)==0) { assert(("Command-Format: $$exec(#)?select:forget$$ ERROR at final $",(trm[1]=='$'))); if (debug) fprintf(stderr,"\nOFF(%s)\n",num); if (sispm_switch_off(udev,id,atoi(num)) !=0) send(out,pos,neg-pos-1,0); else send(out,neg,trm-neg,0); } else if (strncasecmp(cmd,"toggle(",7)==0) { assert(("Command-Format: $$exec(#)?select:forget$$ ERROR at final $",(trm[1]=='$'))); if (debug) fprintf(stderr,"\nTOGGLE(%s)\n",num); if (sispm_switch_getstatus(udev,id,atoi(num)) == 0) { sispm_switch_on(udev,id,atoi(num)); send(out,pos,neg-pos-1,0); } else { sispm_switch_off(udev,id,atoi(num)); send(out,neg,trm-neg,0); } } else if (strncasecmp(cmd,"status(",7)==0) { assert(("Command-Format: $$exec(#)?select:forget$$ ERROR at final $",(trm[1]=='$'))); if (debug) fprintf(stderr,"\nSTATUS(%s)\n",num); if (sispm_switch_getstatus(udev,id,atoi(num)) != 0) send(out,pos,neg-pos-1,0); else send(out,neg,trm-neg,0); } else { // assert(("unknown but terminated command sequence",(trm[1]=='$'))); //fprintf(stderr,"\nundefined sequence %s\n",cmd); send(out,"$$",2,0); } remlen=remlen-(2+trm-mrk); mrk=ptr=&trm[2]; } } } send(out, mrk, remlen, 0); memset(xbuffer, 0, BSIZE); retvalue = fgets(xbuffer, BSIZE-1, in); assert((retvalue != NULL) || feof(in)); remlen = length = ftell(in) - lastpos; lastpos = ftell(in); } if (udev != NULL) { usb_close(udev); udev = NULL; } fclose(in); return; } #endif void print_disclaimer(char*name) { fprintf(stderr, "\nSiS PM Control for Linux 3.1\n\n" "(C) 2004-2011 by Mondrian Nuessle, (C) 2005, 2006 by Andreas Neuper.\n" "(C) 2010 by Olivier Matheret for the plannification part\n" "This program is free software.\n" "%s comes with ABSOLUTELY NO WARRANTY; for details \n" "see the file INSTALL. This is free software, and you are welcome\n" "to redistribute it under certain conditions; see the file INSTALL\n" "for details.\n\n", name ); return; } void print_usage(char* name) { print_disclaimer(name); fprintf(stderr,"\n" "sispmctl -s\n" "sispmctl [-q] [-n] [-d 0...] [-D ...] -b \n" "sispmctl [-q] [-n] [-d 0...] [-D ...] -[o|f|t|g|m] 1..4|all\n" "sispmctl [-q] [-n] [-d 0...] [-D ...] -[a|A] 1..4|all [--Aat '...'] [--Aafter ...] [--Ado ] ... [--Aloop ...]\n" " 'v' - print version & copyright\n" " 'h' - print this usage information\n" " 's' - scan for supported GEMBIRD devices\n" " 'b' - switch buzzer on or off\n" " 'o' - switch outlet(s) on\n" " 'f' - switch outlet(s) off\n" " 't' - toggle outlet(s) on/off\n" " 'g' - get status of outlet(s)\n" " 'm' - get power supply status outlet(s) on/off\n" " 'd' - apply to device 'n'\n" " 'D' - apply to device with given serial number\n" " 'n' - show result numerically\n" " 'q' - quiet mode, no explanations - but errors\n" " 'a' - get plannification for outlet\n" " 'A' - set plannification for outlet\n" " '-A' - select outlet\n" " '--Aat \"date\"' - sets an event time as a date '%%Y-%%m-%%d %%H:%%M'\n" " '--Aafter N' - sets an event time as N minutes after the previous one\n" " '--Ado ' - sets the current event's action\n" " '--Aloop N' - loops to 1st event's action after N minutes\n\n" #ifndef WEBLESS "Webinterface features:\n" "sispmctl [-q] [-i ] [-p <#port>] [-u ] -l\n" " 'l' - start port listener\n" " 'i' - bind socket on interface with given IP (dotted decimal, i.e. 192.168.1.1)\n" " 'p' - port number for listener (%d)\n" " 'u' - repository for web pages (default=%s)\n\n" ,listenport, homedir #endif ); #ifdef WEBLESS fprintf(stderr,"Note: This build was compiled without web-interface features.\n\n"); #endif } #ifndef WEBLESS const char *show_header(int type) { char *content = NULL; static char buffer[1024]; time_t now; int http = 100 * (type>>4); switch(type&0xf) { case 1: content="\nContent-Type: text/html"; break; case 2: content="\nContent-Type: text/plain"; break; case 3: content="\nContent-Type: image/gif"; break; case 4: content="\nContent-Type: image/jpg"; break; default: content=""; break; } now = time(NULL); sprintf(buffer, "HTTP/1.0 %d Answer\nServer: sispm\nConnection: close%s\nDate: %s\n\n", http, content, ctime(&now)); return(buffer); } const char *answer(char*in) { char *ptr = NULL, *end = NULL; int type = 0; static char out[MAXANSWER+2]; memset(out,0,MAXANSWER); if (strncasecmp("GET ",in,4) == 0) { type = 1; ptr = &in[4]; } else if (strncasecmp("POST ",in,5) == 0) { type = 1; ptr = &in[5]; } else { type = 1; ptr = &in[0]; } end = strchr(ptr,' '); assert((end-ptr<1024,"filename buffer is defined to 1024 chars only")); if (strncasecmp("/switch",ptr,6) == 0) ptr += 6; strcpy(out,show_header((4<<4)+1)); strcat(out,"\n\nTEST

TEST

\n"); strcat(out,show_header((4<<4)+1)); return(out); } #endif void parse_command_line(int argc, char* argv[], int count, struct usb_device*dev[], char *usbdevsn[]) { int numeric=0; int c; int i,j; int result; int from=1, upto=4; int status; int devnum=0; usb_dev_handle *udev=NULL; usb_dev_handle *sudev=NULL; //scan device unsigned int id=0; //product id of current device char* onoff[] = { "off", "on", "0", "1" }; #ifndef WEBLESS char* bindaddr=0; #endif unsigned int outlet; struct plannif plan; plannif_reset(&plan); #ifdef BINDADDR if (strlen(BINDADDR) != 0) bindaddr=BINDADDR; #endif while( (c=getopt(argc, argv,"i:o:f:t:a:A:b:g:m:lqvhnsd:D:u:p:")) != -1 ) { if ((c != 'h') && (c != 'v') && (count == 0)) { fprintf(stderr, "No GEMBIRD SiS-PM found. Check USB connections, please!\n"); if (udev != NULL) { usb_close(udev); udev = NULL; } exit(1); } if( c=='o' || c=='f' || c=='g' || c=='t' || c=='a' || c=='A' || c=='m') { if((strncmp(optarg,"all",strlen("all"))==0) || (atoi(optarg)==7) ) { //use all outlets from=1; upto=4; } else { from = upto = atoi(optarg); } if (from<1 || upto>4) { fprintf(stderr,"Invalid outlet number given: %s\n" "Expected: 1, 2, 3, 4, or all.\nTerminating.\n",optarg); print_disclaimer( argv[0] ); exit(-6); } } else { from = upto = 0; } if( c=='o' || c=='f' || c=='g' || c=='b' || c=='t' || c=='a' || c=='A' || c=='m') //we need a device handle for these commands { /* get device-handle/-id if it wasn't done already */ if(udev==NULL){ udev = get_handle(dev[devnum]); id = get_id(dev[devnum]); if(udev==NULL) fprintf(stderr, "No access to Gembird #%d USB device %s\n", devnum, dev[devnum]->filename ); else if(verbose) printf("Accessing Gembird #%d USB device %s\n", devnum, dev[devnum]->filename ); } } #ifdef WEBLESS if (c=='l' || c=='i' || c=='p' || c=='u' ) { fprintf(stderr,"Application was compiled without web-interface. Feature not available.\n"); exit(-100); } #endif // using first available device id = get_id(dev[devnum]); if (((id == PRODUCT_ID_MSISPM_OLD) || (id == PRODUCT_ID_MSISPM_FLASH)) && (from != upto)) from = upto = 1; for (i=from; i <= upto; i++) { switch(c) { case 's': for (status=0; statusbus->dirname, dev[status]->filename); else printf("%d %s %s\n", status, dev[status]->bus->dirname, dev[status]->filename); id = get_id(dev[status]); if ((id == PRODUCT_ID_SISPM) || (id == PRODUCT_ID_SISPM_FLASH_NEW)) if (numeric == 0) printf("device type: 4-socket SiS-PM\n"); else printf("4\n"); else if (numeric == 0) printf("device type: 1-socket mSiS-PM.\n"); else printf("1\n"); sudev = get_handle(dev[status]); id = get_id(dev[status]); if(sudev==NULL) fprintf(stderr, "No access to Gembird #%d USB device %s\n", status, dev[status]->filename ); if (numeric == 0) printf("serial number: %s\n",get_serial(sudev)); else printf("%s\n",get_serial(sudev)); usb_close(sudev); sudev = NULL; printf("\n"); } break; // select device... // replace previous (first is default) device by selected one case 'd': // by id if (udev != NULL) { usb_close(udev); udev = NULL; } devnum = atoi(optarg); if ((devnum < 0) || (devnum >= count)) { fprintf(stderr, "Invalid number or given device not found.\nTerminating\n"); if (udev != NULL) { usb_close(udev); udev = NULL; } exit(-8); } break; case 'D': // by serial number for (j=0; j < count; j++) { if (debug) fprintf(stderr, "now comparing %s and %s\n", usbdevsn[j], optarg); if (strcasecmp(usbdevsn[j], optarg) == 0) { if (udev != NULL) { usb_close(udev); udev = NULL; } devnum = j; break; } } if (devnum != j) { fprintf(stderr, "No device with serial number %s found.\nTerminating\n",optarg); if (udev != NULL) { usb_close(udev); udev = NULL; } exit(-8); } break; case 'o': outlet=check_outlet_number(id, i); sispm_switch_on(udev,id,outlet); if(verbose) printf("Switched outlet %d %s\n",i,onoff[1+numeric]); break; case 'f': outlet=check_outlet_number(id, i); sispm_switch_off(udev,id,outlet); if(verbose) printf("Switched outlet %d %s\n",i,onoff[0+numeric]); break; case 't': outlet=check_outlet_number(id, i); result=sispm_switch_toggle(udev,id,outlet); if(verbose) printf("Toggled outlet %d %s\n",i,onoff[result]); break; case 'A': { time_t date, lastEventTime; struct tm *timeStamp_tm; struct plannif plan; int opt, lastAction = 0; ulong loop = 0; int optindsave = optind; int actionNo=0; outlet=check_outlet_number(id, i); time( &date ); timeStamp_tm = localtime(&date); lastEventTime = ((ulong)(date/60))*60; // round to previous minute plannif_reset (&plan); plan.socket = outlet; plan.timeStamp = date; plan.actions[0].switchOn = 0; const struct option opts[] = { { "Ado", 1, NULL, 'd' }, { "Aafter", 1, NULL, 'a' }, { "Aat", 1, NULL, '@' }, { "Aloop", 1, NULL, 'l' }, { NULL, 0, 0, 0 } }; // scan long options and store in plan+loop variables while ((opt = getopt_long(argc, argv, "", opts, NULL)) != EOF) { if (opt == 'l') { loop = atol(optarg); continue; } if (actionNo+1 >= sizeof(plan.actions)/sizeof(struct plannifAction)) { // last event is reserved for loop or stop fprintf(stderr,"Too many plannification events\nTerminating\n"); exit(-7); } switch (opt) { case 'd': plan.actions[actionNo+1].switchOn = (strcmp(optarg, "on") == 0 ? 1 : 0); break; case 'a': plan.actions[actionNo].timeForNext = atol(optarg); break; case '@': { struct tm tm; time_t time4next; bzero (&tm, sizeof(tm)); tm.tm_isdst = timeStamp_tm->tm_isdst; strptime(optarg, "%Y-%m-%d %H:%M", &tm); time4next = mktime(&tm); if (time4next > lastEventTime) plan.actions[actionNo].timeForNext = (time4next - lastEventTime) / 60; else plan.actions[actionNo].timeForNext = 0; break; } case '?': default: fprintf(stderr,"Unknown Option: %s\nTerminating\n",argv[optind-1]); exit(-7); break; } if (plan.actions[actionNo].timeForNext == 0) { fprintf(stderr,"Incorrect Date: %s\nTerminating\n",optarg); exit(-7); } if (plan.actions[actionNo].timeForNext != -1 && plan.actions[actionNo+1].switchOn != -1) { lastEventTime += 60 * plan.actions[actionNo].timeForNext; actionNo++; } } // compute the value to set in the last row, according to loop while (plan.actions[lastAction].timeForNext != -1) { if (loop && (lastAction > 0)) { // we ignore the first time for the loop calculation if (loop <= plan.actions[lastAction].timeForNext) { printf ("error : the loop period is too short\n"); exit(1); } loop -= plan.actions[lastAction].timeForNext; } lastAction++; } if (lastAction >= 1) plan.actions[lastAction].timeForNext = loop; // let's go, and check usb_command_setplannif(udev, &plan); if(verbose) { plannif_reset (&plan); usb_command_getplannif(udev,outlet,&plan); plannif_display(&plan, 0, NULL); } if (inext) { for (dev = bus->devices; dev; dev = dev->next) { if ((dev->descriptor.idVendor == VENDOR_ID) && ((dev->descriptor.idProduct == PRODUCT_ID_SISPM) || (dev->descriptor.idProduct == PRODUCT_ID_MSISPM_OLD) || (dev->descriptor.idProduct == PRODUCT_ID_MSISPM_FLASH) || (dev->descriptor.idProduct == PRODUCT_ID_SISPM_FLASH_NEW))) { usbdev[count++] = dev; } if (count == MAXGEMBIRD) { fprintf(stderr,"%d devices found. Please recompile if you need to support more devices!\n",count); break; } } } /* bubble sort them first, thnx Ingo Flaschenberger */ if (count > 1) { do { found = 0; for (i=1; i< count; i++) { if (usbdev[i]->devnum < usbdev[i-1]->devnum) { usbdevtemp = usbdev[i]; usbdev[i] = usbdev[i-1]; usbdev[i-1] = usbdevtemp; found = 1; } } } while (found != 0); } /* get serial number of each device */ for (i=0; i < count; i++) { usb_dev_handle *sudev = NULL; sudev = get_handle(usbdev[i]); if (sudev == NULL) { fprintf(stderr, "No access to Gembird #%d USB device %s\n", i, usbdev[i]->filename ); usbdevsn[i] = malloc(5); usbdevsn[i][0] = '#'; usbdevsn[i][1] = '0'+i; usbdevsn[i][2] = '\0'; } else { usbdevsn[i] = strdup(get_serial(sudev)); usb_close(sudev); sudev = NULL; } } /* do the real work here */ if (argc <= 1) print_usage(argv[0]); else parse_command_line(argc,argv,count,usbdev,usbdevsn); return 0; } sispmctl-3.1/src/main.h0000664000200200017500000000236611664771076013572 0ustar petepete/* SisPM.c Controls the GEMBIRD Silver Shield PM USB outlet device (C) 2004,2005,2006 Mondrian Nuessle, Computer Architecture Group, University of Mannheim, Germany (C) 2005, Andreas Neuper, Germany This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA nuessle@uni-mannheim.de aneuper@web.de */ #ifndef MAIN_H #define MAIN_H #define MAXANSWER 8192 #ifndef WEBDIR #define WEBDIR "" #endif #define HOMEDIR "/usr/local/share/httpd/sispmctl/doc" extern int verbose; const char*answer(char*in); void process(int out,char*v,struct usb_device*dev,int devnum); extern int debug; #endif /* ! MAIN_H */ sispmctl-3.1/src/nethelp.c0000664000200200017500000000322611664771076014274 0ustar petepete/* Copyright (C) 2003 Evan Buswell Based on code from icecast 1.3.11 sock.c: Copyright (C) 1999 Jack Moffitt, Barath Raghavan, and Alexander Haväng This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #ifndef MSG_NOSIGNAL #define MSG_NOSIGNAL 0 #endif /* * Write len bytes from buf to the socket. * Returns the return value from send() */ int sock_write_bytes(int sockfd, const unsigned char *buff, int len) { int t, n; for(t = 0 ; len > 0 ; ) { n = send(sockfd, (void *) buff + t, len, MSG_NOSIGNAL); if (n < 0) { return((t == 0) ? n : t); } t += n; len -= n; } return(t); } /* * Read len bytes from buf to the socket. * Returns the return value from recv() */ int sock_read_bytes(int sockfd, const unsigned char *buff, int len) { int t, n; for(t = 0 ; len > 0 ; ) { n = recv(sockfd, (void *) buff + t, len, MSG_NOSIGNAL); if (n < 0) return((t == 0) ? n : t); t += n; len -= n; } return(t); } sispmctl-3.1/src/nethelp.h0000664000200200017500000000031311664771076014273 0ustar petepete#ifndef NETHELP_H #define NETHELP_H int sock_write_bytes(int sockfd, const unsigned char *buff, int len); int sock_read_bytes(int sockfd, const unsigned char *buff, int len); #endif /* ! NETHELP_H */ sispmctl-3.1/src/onoff.fig0000664000200200017500000000047211664771076014267 0ustar petepete#FIG 3.2 Landscape Center Metric A4 100.00 Single -3 1200 2 0 32 #a6cfff 5 1 0 10 4 11 48 0 -1 0.000 1 0 0 0 1575.000 1500.000 1350 1800 1575 1125 1800 1800 2 2 0 1 11 11 50 0 20 0.000 0 0 -1 0 0 5 900 900 2250 900 2250 2250 900 2250 900 900 2 1 0 10 32 11 48 0 -1 0.000 1 1 -1 0 0 2 1575 1575 1575 2025 sispmctl-3.1/src/sispm_ctl.c0000664000200200017500000003474011664771076014637 0ustar petepete/* SisPM_ctl.c Controls the GEMBIRD Silver Shield PM USB outlet device (C) 2004,2005,2006 Mondrian Nuessle, Computer Architecture Group, University of Mannheim, Germany (C) 2005, Andreas Neuper, Germany (C) 2010, Olivier Matheret, France, for the plannification part This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA nuessle@uni-mannheim.de aneuper@web.de */ #include #include #include #include #include #include #include #include #include #include "sispm_ctl.h" extern int verbose; char serial_id[15]; int get_id( struct usb_device* dev) { assert(dev!=0); return dev->descriptor.idProduct; } int usb_control_msg_tries(usb_dev_handle *dev, int requesttype, int request, int value, int index, char *bytes, int size, int timeout) { int ret, i=0; do { usleep(500*i); ret = usb_control_msg(dev, requesttype, request, value, index, bytes, size, timeout); i++; } while ((ret != size) && (i < 5)); return ret; } // for identification: reqtype=a1, request=01, b1=0x01, size=5 char* get_serial(usb_dev_handle *udev) { int reqtype=0xa1; //USB_DIR_OUT + USB_TYPE_CLASS + USB_RECIP_INTERFACE /*request type*/, int req=0x01; unsigned char buffer[6] = { 0, 0, 0, 0, 0, 0 }; if ( usb_control_msg_tries(udev /* handle*/, reqtype, req, (0x03<<8) | 1, 0 /*index*/, (char*) buffer /*bytes*/ , 5, //1 /*size*/, 5000) < 2 ) { fprintf(stderr,"Error performing requested action\n" "Libusb error string: %s\nTerminating\n",usb_strerror()); usb_close (udev); exit(-5); } snprintf(serial_id, 15, "%02x:%02x:%02x:%02x:%02x", buffer[0],buffer[1], buffer[2],buffer[3],buffer[4]); return serial_id; } int usb_command(usb_dev_handle *udev, int b1, int b2, int return_value_expected ) { int reqtype=0x21; //USB_DIR_OUT + USB_TYPE_CLASS + USB_RECIP_INTERFACE /*request type*/, int req=0x09; char buffer[5]; buffer[0]=b1; buffer[1]=b2; if(return_value_expected!=0) { reqtype|=USB_DIR_IN; req=0x01; } if ( usb_control_msg_tries(udev /* handle*/, reqtype, req, (0x03<<8) | b1, 0 /*index*/, buffer /*bytes*/ , 5, //1 /*size*/, 5000) < 2 ) { fprintf(stderr,"Error performing requested action\n" "Libusb error string: %s\nTerminating\n",usb_strerror()); usb_close (udev); exit(-5); } return buffer[1];//(buffer[1]!=0)?1:0; } usb_dev_handle* get_handle(struct usb_device*dev) { usb_dev_handle *udev=NULL; if( dev==NULL ) return NULL; udev = usb_open( dev ); /* prepare USB access */ if (udev == NULL) { fprintf(stderr,"Unable to open USB device %s\n",usb_strerror()); usb_close (udev); exit(-1); } if (usb_set_configuration(udev,1) !=0) { fprintf(stderr,"USB set configuration %s\n",usb_strerror()); usb_close (udev); exit(-2); } if ( usb_claim_interface(udev, 0) !=0) { fprintf(stderr,"USB claim interface %s\nMaybe device already in use?\n",usb_strerror()); exit(-3); } if (usb_set_altinterface(udev, 0) !=0) { fprintf(stderr,"USB set alt interface %s\n",usb_strerror()); usb_close (udev); exit(-4); } return udev; } int check_outlet_number(int id, int outlet) { if (id == PRODUCT_ID_MSISPM_OLD) { if (outlet < 0 || outlet > 1) if (verbose == 1) fprintf(stderr,"mSIS-PM devices only feature one outlet. Number changed from %d to 1\n", outlet); outlet = 0; } if (id == PRODUCT_ID_MSISPM_FLASH) { if (outlet != 1) if (verbose == 1) fprintf(stderr,"mSIS-PM devices only feature one outlet. Number changed from %d to 1\n", outlet); outlet = 1; } if (id == PRODUCT_ID_SISPM || id == PRODUCT_ID_SISPM_FLASH_NEW) { if (outlet < 1 || outlet > 4) { if (verbose == 1) fprintf(stderr,"SIS-PM devices only feature 4 outlets. Number changed from %d to 1\n", outlet); outlet = 1; } } return outlet; } int sispm_switch_on(usb_dev_handle * udev,int id, int outlet) { outlet=check_outlet_number(id,outlet); return usb_command( udev, 3*outlet, 0x03, 0 ) ; } int sispm_switch_off(usb_dev_handle * udev,int id, int outlet) { outlet=check_outlet_number(id,outlet); return usb_command( udev, 3*outlet, 0x00, 0 ); } int sispm_switch_toggle(usb_dev_handle * udev,int id, int outlet) { if (sispm_switch_getstatus(udev,id,outlet)==0) //on { sispm_switch_on(udev,id,outlet); return 1; } else { sispm_switch_off(udev,id,outlet); return 0; } return 0; } int sispm_switch_getstatus(usb_dev_handle * udev,int id, int outlet) { int result; outlet=check_outlet_number(id,outlet); result=(usb_command( udev, 3*outlet, 0x03, 1 ) ); //take bit 1, which gives the relais status return result & 1; } int sispm_get_power_supply_status(usb_dev_handle * udev,int id, int outlet) { int result; outlet=check_outlet_number(id,outlet); result=(usb_command( udev, 3*outlet, 0x03, 1 ) ); //take bit 0, which gives the power supply status return (result >>1 )& 1; } // displays a plannification structure in a human readable way void plannif_display(const struct plannif* plan, int verbose, const char* progname) { char datebuffer[80]; struct tm * timeinfo; time_t date; int action; ulong loop=0, lastActionTime=0; char cmdline[1024] = ""; printf("\nGet outlet %d status :\n", plan->socket); date = plan->timeStamp; timeinfo = localtime( &date ); strftime (datebuffer,80,"%e-%b-%Y %H:%M:%S",timeinfo); printf(" programmed on : %s\n", datebuffer); // action dates are on round minutes date = ((time_t)(date/60))*60; // count loop time, as the sum of all but first events for (action=sizeof(plan->actions)/sizeof(struct plannifAction)-1 ; action>=0 && plan->actions[action].switchOn == -1; action--); // skip void entries if (action>=1 && plan->actions[action].timeForNext > 0) { // we have a loop for ( ; action>=1; action--) loop += plan->actions[action].timeForNext; } // compute last action time for (action=0 ; action+1actions)/sizeof(struct plannifAction) && (plan->actions[action+1].switchOn != -1); action++) lastActionTime += plan->actions[action].timeForNext; // if loop is enabled, do not display initial times, but next trigger times // so that at least last action is in the future if (loop > 0) { time_t now; ulong numOfLoops; time (&now); if (date+(lastActionTime*60) <= now) { numOfLoops = 1 + (now-(date+(lastActionTime*60))) / (loop*60); date += numOfLoops * (loop*60); } } // now read all filled rows, except the possibly last "stop" row for (action=0 ; actionactions)/sizeof(struct plannifAction) && (plan->actions[action].switchOn != -1) && (plan->actions[action].timeForNext > 0); action++) { date += 60 * plan->actions[action].timeForNext; if ((action+1 < sizeof(plan->actions)/sizeof(struct plannifAction)) && (plan->actions[action+1].switchOn != -1)) { timeinfo = localtime( &date ); strftime (datebuffer,80,"%Y-%m-%d %H:%M",timeinfo); printf(" On %s ", datebuffer); printf("switch %s\n", (plan->actions[action+1].switchOn ? "on" : "off")); if (verbose) sprintf(cmdline+(strlen(cmdline)), "--Aat \"%s\" --Ado %s ", datebuffer, (plan->actions[action+1].switchOn ? "on" : "off")); } else { if (action > 0) { ulong loopdsp = loop; printf(" Loop every "); if (loopdsp >= 60*24*7) { printf("%li week(s) ", loopdsp / (60*24*7)); loopdsp %= (60*24*7); } if (loopdsp >= 60*24) { printf("%li day(s) ", loopdsp / (60*24)); loopdsp %= (60*24); } if (loopdsp >= 60) { printf("%lih ", loopdsp / 60); loopdsp %= 60; } if (loopdsp > 0) printf("%limin", loopdsp); printf("\n"); if (verbose) sprintf(cmdline+(strlen(cmdline)), "--Aloop %li ", loop); } else printf(" No programmed event.\n"); } } if (verbose) { printf(" equivalent command line : %s -A%i %s\n", progname, plan->socket, cmdline); } } // private : scans the buffer, and fills the plannification structure accordingly void plannif_scanf(struct plannif* plan, const unsigned char* buffer) { int bufindex = 0; ulong nextWord; int actionNo = 1; READNEXTBYTE; plan->socket = (nextWord-1)/3; READNEXTDOUBLEWORD; plan->timeStamp = nextWord; // first time to wait is at the end of the buffer, but may be extended to the plannif rows space READWORD(0x25); plan->actions[0].timeForNext = nextWord; if (plan->actions[0].timeForNext == 0xFD21) { // max value : means we may have extensions, which would have the flag 0x4000 do { READNEXTWORD; if ((nextWord & 0x4000) == 0x4000) { plan->actions[0].timeForNext += nextWord & ~0x4000; } else { REVERTNEXTWORD; } } while (nextWord == 0x7FFF); } plan->actions[0].switchOn = 1; // whatever, it is useless for the initial waiting phase // now we can read each plannification rows while (bufindex < 0x25) { READNEXTWORD; if (nextWord != 0x3FFF) { // 3FFF means "empty" // on/off is the MSB of the 1st word, whether it is extended or not plan->actions[actionNo].switchOn = nextWord >> 15; plan->actions[actionNo].timeForNext = nextWord & 0x7FFF; if (plan->actions[actionNo].timeForNext == 0x3FFE ) { // again, 3FFE is the max value : it might be extended to next words, if they have the flag 0x4000 do { READNEXTWORD; if ((nextWord & 0x4000) == 0x4000) { plan->actions[actionNo].timeForNext += nextWord & ~0x4000; } else { REVERTNEXTWORD; } } while (nextWord == 0x7FFF); } } actionNo++; } } // queries the device, and fills the plannification structure void usb_command_getplannif(usb_dev_handle *udev, int socket, struct plannif* plan) { int reqtype=0x21 | USB_DIR_IN; //USB_DIR_OUT + USB_TYPE_CLASS + USB_RECIP_INTERFACE /*request type*/, int req=0x01; unsigned char buffer[0x27]; if ( usb_control_msg_tries(udev /* handle*/, reqtype, req, ((0x03<<8) | (3*socket)) +1, 0 /*index*/, (char*) buffer /*bytes*/ , 0x27, /*size*/ 5000) < 0x27 ) { fprintf(stderr,"Error performing requested action\n" "Libusb error string: %s\nTerminating\n",usb_strerror()); usb_close (udev); exit(-5); } /* // debug int n; for(n = 0 ; n < 0x27 ; n++) printf("%02x ",(unsigned char)buffer[n]); printf("\n"); // */ plannif_scanf(plan, buffer); } // private : prints the buffer according to the plannification structure void plannif_printf(const struct plannif* plan, unsigned char* buffer) { int bufindex = 0; ulong nextWord, time4next; int actionNo; nextWord = 3*plan->socket +1; WRITENEXTBYTE; nextWord = plan->timeStamp; WRITENEXTDOUBLEWORD; wmemset((wchar_t*)(buffer+5), (wchar_t)0x3FFF3FFF, (0x27-5)/sizeof(wchar_t)); if (plan->actions[0].timeForNext == -1) { //delete all nextWord = 1; WRITEWORD(0x25); } else { time4next = plan->actions[0].timeForNext; // first time to wait is at the end of the buffer, but may be extended to the plannif rows space if (time4next > 0xFD21) { // max value is 0xFD21 : means we can set extensions, with the flag 0x4000 time4next -= 0xFD21; while (time4next > 0x3FFF) { // each extension can handle 3FFF bytes nextWord = 0x3FFF | 0x4000; WRITENEXTWORD; time4next -= 0x3FFF; } nextWord = time4next | 0x4000; WRITENEXTWORD; nextWord = 0xFD21; } else nextWord = time4next; WRITEWORD(0x25); } // now we can write each plannification rows, if non empty for (actionNo = 1 ; (actionNo < sizeof(plan->actions)/sizeof(struct plannifAction)) && (plan->actions[actionNo].switchOn != -1); actionNo++) { time4next = plan->actions[actionNo].timeForNext; if (time4next > 0x3FFE) { // max value is 0x3FFE : means we can set extensions, with the flag 0x4000 nextWord = 0x3FFE | (plan->actions[actionNo].switchOn << 15); WRITENEXTWORD; time4next -= 0x3FFE; while (time4next > 0x3FFF) { // each extension can handle 3FFF bytes nextWord = 0x3FFF | 0x4000; WRITENEXTWORD; time4next -= 0x3FFF; } nextWord = time4next | 0x4000; } else nextWord = time4next | (plan->actions[actionNo].switchOn << 15); WRITENEXTWORD; } } // prepares the buffer according to plannif and sends it to the device void usb_command_setplannif(usb_dev_handle *udev, struct plannif* plan) { int reqtype=0x21; //USB_DIR_OUT + USB_TYPE_CLASS + USB_RECIP_INTERFACE /*request type*/, int req=0x09; unsigned char buffer[0x27]; plannif_printf(plan, buffer); /*// debug int n; for(n = 0 ; n < 0x27 ; n++) printf("%02x ",(unsigned char)buffer[n]); printf("\n"); plannif_reset(plan); plannif_scanf(plan, &buffer[0]); plannif_display(plan, 0, NULL); exit(0); //*/ if ( usb_control_msg_tries(udev /* handle*/, reqtype, req, ((0x03<<8) | (3*plan->socket)) +1, 0 /*index*/, (char*) buffer /*bytes*/ , 0x27, /*size*/ 5000) < 0x27 ) { fprintf(stderr,"Error performing requested action\n" "Libusb error string: %s\nTerminating\n",usb_strerror()); usb_close (udev); exit(-5); } } // prepares the plannif structure with initial values : compulsory before structure use ! void plannif_reset (struct plannif* plan) { int i; plan->socket = 0; plan->timeStamp = 0; for (i=0 ; iactions)/sizeof(struct plannifAction) ; i++) { plan->actions[i].switchOn = -1; plan->actions[i].timeForNext = -1; } } sispmctl-3.1/src/sispm_ctl.h0000664000200200017500000001012611664771076014634 0ustar petepete/* SisPM_ctl.h Controls the GEMBIRD Silver Shield PM USB outlet device (C) 2004,2005,2006 Mondrian Nuessle, Computer Architecture Group, University of Mannheim, Germany (C) 2005, Andreas Neuper, Germany (C) 2010, Olivier Matheret, France, for the plannification part This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA nuessle@uni-mannheim.de aneuper@web.de */ #ifndef SISPM_CTL_H #define SISPM_CTL_H #define MAXGEMBIRD 32 #define VENDOR_ID 0x04B4 /* USB Product IDs for different sis-pm devices*/ #define PRODUCT_ID_SISPM 0xFD11 #define PRODUCT_ID_MSISPM_OLD 0xFD10 #define PRODUCT_ID_MSISPM_FLASH 0xFD12 #define PRODUCT_ID_SISPM_FLASH_NEW 0xFD13 #define USB_DIR_IN 0x80 /* to host */ #define USB_DIR_OUT 0 /* to device */ #define cpu_to_le16(a) (a) typedef unsigned long ulong; struct plannifAction { ulong switchOn; // action to do now ulong timeForNext; // wait this num of minutes before any next action ; 0 means "stop" }; struct plannif { int socket; ulong timeStamp; struct plannifAction actions[17]; // 16 + the initial one }; #define READNEXTBYTE {nextWord = (ulong)buffer[bufindex]; bufindex ++;} #define READWORD(idx) {nextWord = (ulong)buffer[idx] + (buffer[idx+1]<<8);} #define READNEXTWORD {nextWord = (ulong)buffer[bufindex] + (buffer[bufindex+1]<<8); bufindex += 2;} #define READNEXTDOUBLEWORD {nextWord = (ulong)buffer[bufindex] + (buffer[bufindex+1]<<8) + (buffer[bufindex+2]<<16) + (buffer[bufindex+3]<<24); bufindex += 4;} #define CHECK(idx, size) if (idx>0x27-(size-1)-2) {printf ("Error : too many planification items, or combined with large time intervals\n"); exit(2);} // avoid writing outside the buffer, or even in the last 2 bytes #define WRITENEXTBYTE { CHECK(bufindex, 1); buffer[bufindex]=nextWord & 0xFF; bufindex ++;} #define WRITENEXTWORD { CHECK(bufindex, 2); buffer[bufindex+1]=(nextWord>>8) & 0xFF ; buffer[bufindex]=nextWord & 0xFF; bufindex += 2;} #define WRITENEXTDOUBLEWORD { CHECK(bufindex, 4); buffer[bufindex+3]=(nextWord>>24) & 0xFF ; buffer[bufindex+2]=(nextWord>>16) & 0xFF ; buffer[bufindex+1]=(nextWord>>8) & 0xFF ; buffer[bufindex]=nextWord & 0xFF; bufindex += 4;} #define WRITEWORD(idx) { buffer[idx+1]=(nextWord>>8) & 0xFF ; buffer[idx]=nextWord & 0xFF;} #define REVERTNEXTWORD {bufindex -= 2;} #define STRINGIFY(x) #x #define DEBUGVAR(var) printf("value of "STRINGIFY(var)" is %li\n", var); void plannif_reset (struct plannif* plan); void usb_command_getplannif(usb_dev_handle *udev, int socket, struct plannif* plan); void usb_command_setplannif(usb_dev_handle *udev, struct plannif* plan); void plannif_display(const struct plannif* plan, int verbose, const char* progname); usb_dev_handle*get_handle(struct usb_device*dev); int usb_command(usb_dev_handle *udev, int b1, int b2, int return_value_expected ); #define sispm_buzzer_on(udev) usb_command( udev, 0x02, 0x00, 0 ) #define sispm_buzzer_off(udev) usb_command( udev, 0x02, 0x04, 0 ) int get_id( struct usb_device* dev); char* get_serial(usb_dev_handle *udev); int sispm_switch_on(usb_dev_handle * udev,int id, int outlet); int sispm_switch_off(usb_dev_handle * udev,int id, int outlet); int sispm_switch_getstatus(usb_dev_handle * udev,int id, int outlet); int sispm_get_power_supply_status(usb_dev_handle * udev,int id, int outlet); int check_outlet_number(int id, int outlet); int sispm_switch_toggle(usb_dev_handle * udev,int id, int outlet); #endif sispmctl-3.1/src/sispmctl.10000664000200200017500000001231311664771076014406 0ustar petepete.\" Process this file with .\" groff -man -Tascii foo.1 .\" .TH sispmctl 1 "JUL 2011" Linux "User Manuals" .SH NAME sispmctl - Gembird Silver Shield PM ConTroL program .SH SYNOPSIS .B sispmctl .I -s .P .B sispmctl [ .I -q .B ] [ .I -n .B ] [ .I -d .B 0... ] .B [ .I -D .B ... ] .I -b .B .P .B sispmctl [ .I -q .B ] [ .I -n .B ] [ .I -d .B 0... ] .B [ .I -D .B ... ] < .I -o .B | .I -f .B | .I -t .B | .I -g .B | .I -m .B > <1..4|all> .P .B sispmctl [ .I -q .B ] [ .I -n .B ] [ .I -d .B 0... ] .B [ .I -D .B ... ] < .I -a .B | .I -A .B > <1..4|all> .B [ .I --Aat .B '...' ] [ .I --Aafter .B ... ] [ .I --Ado .B ] ... [ .I --Aloop .B ... ] .P .B sispmctl [ .I -d .B 0... ] .B [ .I -D .B ... ] [ .I -i .B ] [ .I -p <#port> .B ] [ .I -u .B ] .I -l .P .SH DESCRIPTION .B sispmctl is a tool to switch the USB controlled outlets of Gembird Silver Shield PM. It is known by many names, e.g. Revolt Power Switch. .P It is coded in C and uses the usb specific library (LibUSB). This allows you a portable and fast solution. .SH OPTIONS .IP -h print usage information .IP -s scan for supported GEMBIRD devices .IP -l daemonize and start to listening as a simple http webserver (default port: 2638) .IP -p IP network port (default: 2638) for listener. There is no authentication implemented yet. .IP -u give the directory path where pages lay, that are served (default: /usr/local/httpd/sispmctl). The Web path component is completely ignored for security reasons. .IP -b switch the buzzer on and off .IP -o switch the given outlet(s) to "ON" .IP -f switch the given outlet(s) to "OFF" .IP -t toggle the state of the given outlet(s) .IP -g show the status of the given outlet(s) .IP -m get power supply status for the given outlet(s) .IP -d Use not the first but the given device in the sequence of detected devices, starting with "0" for the first device (see scan option) .IP -D Same as -d, but choose by serial number (see scan option) .IP -n do not print "ON" and "OFF", but "1" and "0" instead .IP -q do neither print explanations nor disclaimers except it is requested .IP -a get plannification for given outlet .IP -A set plannification for given outlet --Aat "date" - sets an event time as a date '%Y-%m-%d %H:%M' --Aafter N - sets an event time as N minutes after the previous one --Ado - sets the current event's action --Aloop N - loops to 1st event's action after N minutes .IP -v print version & copyright .SH WEB INTERFACE The sispmctl program provides a web interface when started with the .I -l option. No additional http server is needed. Each selected usb device is blocked by sispmctl while running. .P After installation, the first of two web-interfaces is selected. The default location of the HTML files is /usr/local/httpd/sispmctl/doc which is a symbolic link to /usr/local/httpd/sispmctl/skin1. .P The http capabilities of sispmctl are limited. Technically speaking, only the first line of each http request is parsed. The terminating path component, i.e. file name, is looked up in the repository directory. If present the file is parsed and in absence of control sequences sent as is. The files must include the http header portion. .P Control sequences start and end with double dollar `$$'. They consist of a command portion separated by a question mark `?' from alternative outputs which are separated by the first colon `:'. The command portion is a token followed by an embraced number that references the outlet, e.g. .IB $$command(1)?positive:negative$$ while command is one of .B status, .B toggle, .B on or .B off. I strongly recommend to avoid the on/off/toggle commands in pages that may be reloaded. Best is to redirect to other pages that only include status requests. .SH PLANNIFICATIONS The sispmctl program provides plannifications, plannifications can be used to turn given outlets of the device "ON" or "OFF" at or after a given time. Plannifications can also be set to loop after a given number of minutes. .P To show the planned plannification for a given outlet use the option .I -a and specify the wanted outlet(s). The option .I -A plus any of the options .I --Aat , .I --Aafter , .I --Ado and .I --Aloop will create a new plannification for the given output. If only .I -A plus an outlet is called, the plannification for the outlet will be deleted. .SH EXAMPLES Switch off the first outlet of the first SiS-PM and the third outlet of the second SiS-PM: .P .B sispmctl -f 1 -d 1 -f 3 Print the status of the forth outlet as zero or one: .P .B sispmctl -nqg 4 Set a planification so outlet 2 on the first device gets turned "ON" on the given date and time: .P .B sispmctl -A 2 --Aat '2011-07-27 20:45' --Ado on Set a planification so outlet 3 on the second device gets turned "ON" after 2 minutes and "OFF" after another 10 minutes. The planification will loop after 1 hour: .P .B sispmctl -d 1 -A 3 --Aafter 2 --Ado on --Aafter 10 --Ado off --Aloop 60 Run sispmctl on the second device as a web-server: .P .B sispmctl -d 1 -l You can connect to it from the same machine by pointing to http://localhost:2638 with your webbrowser .SH AUTHOR .P First version by Mondrian Nuessle, nuessle@uni-mannheim.de .P Web integration and man page by Andreas Neuper, ANeuper-at-web-dot-de .P Plannifications by Olivier Matheret sispmctl-3.1/src/socket.c0000664000200200017500000001123311664771076014122 0ustar petepete/* Copyright (C) 2003 Evan Buswell This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include #include #include #include #include #include "config.h" #ifdef HAVE_SYS_ETHERNET_H #include #endif #ifdef HAVE_NET_ETHERNET_H #include #endif #include #include "socket.h" #include "nethelp.h" #include "main.h" int listenport=LISTENPORT; void l_listen(int*sock, struct usb_device*dev, int devnum) { int i; int s; int connected=0; uid_t uid; int BUFFERSIZE=4096; int junk = 0; char *oob; char *buffer; struct timespec waittime; waittime.tv_sec = 0; waittime.tv_nsec = 250000000; /* a quarter second */ oob = (char *) malloc(32); buffer = (char *) malloc(BUFFERSIZE+4); /* drop priveleges */ uid = getuid(); seteuid(uid); if (debug) fprintf(stderr, "Listening for local provider on port %d...\n", listenport); listen(*sock, 1); /* We only get one connection on this port. Everything else is refused. */ while(1) { while((s = accept(*sock, NULL, NULL)) == -1) { sleep(1); /* retry after error. Really bad errors shouldn't happen. */ } if(debug) fprintf(stderr, "Provider connected.\n"); connected=1; while(connected) { if ((recv(s, oob, 32, MSG_OOB | MSG_DONTWAIT) > 0) && strncmp(oob, "flush", 5)) fprintf(stderr,"OUT-OF-BAND MESSAGE 1"); i = recv(s, buffer, BUFFERSIZE, 0); if (i == -1 || i == 0) { if ((i == -1) && (errno != EAGAIN) && (errno != EINTR)) { if(junk != 0) { fprintf(stderr, "%d bytes\n", junk); junk = 0; } /* wait for a new connection */ perror("Lost provider connection"); close(s); connected=0; } /* see if provider is still there */ i = sock_write_bytes(s, (unsigned char*)"ping", 4); /* we get tcp acks, so there's no need to send a pong from the provider */ if((i == -1) && (errno != EINTR)) { if(junk != 0) { fprintf(stderr, "%d bytes\n", junk); junk = 0; } /* wait for a new connection */ perror("Lost provider connection"); close(s); connected=0; } nanosleep(&waittime, NULL); } else { #if 0 const char*tosend=answer(buffer); fprintf(stderr,"Buffer contains: »%s«\n",buffer); send(s,tosend,strlen(tosend),0); #else process(s,buffer,dev,devnum); #endif memset(buffer,0,BUFFERSIZE); close(s); connected=0; } } } } int*socket_init(char* bind_arg) { int *s; int on = 1; size_t mtu = ETHERMTU; struct sockaddr_in addr; uint32_t bind_addr=0; int result=0; /* bind a socket to listen on */ s = (int *) malloc(sizeof(int)); if( s == NULL ) return(NULL); /* locate socket */ *s = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if( *s == -1 ) return(NULL); /* set socket options */ if( setsockopt(*s, SOL_SOCKET, SO_REUSEADDR, (char *) &on, sizeof(int)) == -1) return(NULL); if( setsockopt(*s, SOL_SOCKET, SO_RCVBUF, &mtu, sizeof(size_t)) == -1) return(NULL); /* set socket essentials */ addr.sin_family = AF_INET; addr.sin_port = htons(listenport); if (bind_arg!=0) { printf("Try to bind to %s\n",bind_arg); result=inet_pton(AF_INET,bind_arg,(void*)&bind_addr); if (result<0) { perror("Inet_pton for given bind address failed"); return(NULL); } else if (result==0) { fprintf(stderr,"Given Bind address is not a valid INET4 address: %s\n",bind_arg); return(NULL); } } else { bind_addr=INADDR_ANY; } addr.sin_addr.s_addr = (uint32_t) bind_addr; /* bind socket now */ if(bind(*s, (struct sockaddr *) &addr, sizeof(struct sockaddr_in)) == -1) { perror("Bind failed"); return(NULL); } return(s); } sispmctl-3.1/src/socket.h0000664000200200017500000000030011664771076014120 0ustar petepete#ifndef LOCAL_H #define LOCAL_H #define LISTENPORT 2638 extern int listenport; int*socket_init(char*bindaddr); void l_listen(int*sock,struct usb_device*,int devnum); #endif /* ! LOCAL_H */ sispmctl-3.1/src/steckdose.gif0000664000200200017500000007434611664771076015157 0ustar petepeteGIF89aÈÁç  !!!"""###$$$%%%&&&'''((()))***+++,,,---...///000111222333444555666777888999:::;;;<<<===>>>???@@@AAABBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNOOOPPPQQQRRRSSSTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaabbbcccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~€€€‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹ŒŒŒŽŽŽ‘‘‘’’’“““”””•••–––———˜˜˜™™™ššš›››œœœžžžŸŸŸ   ¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬­­­®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííîîîïïïðððñññòòòóóóôôôõõõööö÷÷÷øøøùùùúúúûûûüüüýýýþþþÿÿÿ!ù ,ÈÁ@þÿ H° Áƒ*\Ȱ¡Ã‡#:ôG‘¡¿/¬ˆÐ_?|ç¾mÛ†-[¶k׬Q£&-´—Ï ={ÖÌ™³f5™Õ´iS§MœÌ‚ m¶LgÐeH"]šl™2eË’%S†LêSeS­JÍz,YWdÄ3V¬ë±±b;FŒ-±bjá+6¬.±»Ä„ &Lذ¾€ûÛË÷×/`À‚öÕËׯ^wíÊu«­X®X¡2EêS&Ef¤ÀAU­¾~ûñÓˆ5FŠîÆ•37œ·ÛÜro㦠[5kÕ¦I›6 Z´–ÐZ ?.Íx´ç/“Ç4þŒys˜=m>s¶½æNœà›þùÔ‰ó&Q¬Ì–^e&5j²ªï½VE&V¬×³^ÕŠ ÷l±ÿÆÜU 1Ãø—_zí•X0 öÅ`bŽõ²‹.•ÉòÊ*©l6Š'™XB‰"bà0€àBp³Ï?üä£Ïjø˜cN9áØÎ7ßܘŽ?ìP£L0¶ÄbÍ7¾­DÍ4G'Í’Ã-÷Ü’O> eK.5KÎÉÓL0A㌖ÜmyÓL܉ÞM6ETzH]URlN…TìIŸUü•u }dÁE^uù5 bˆéâÉ\äâŒ1½à2 f« RŠ(ŸlÒ!$z4¡Â`pÁDÇà#P>çSŽ8áÔ(«þïü³Ï5É cK4ñ¨D®+!Iܯë¤uNNsœ”-AiÝsÇ6§ltÎ1û$´Üy©]O8©©mPÉ0sÕTl:Å 2P‘ }[Eß~qýçî[u Š˜/° r„Ò`ƒ -°°¢J)¥J'™TòˆN¸À§Ÿ‚JÂlø¢Ï?ù¤SÎ8¬¾*ŽŒ¦úãÍ2ÅÔM<Øg pFÙk¯J ìJMV“$qÔ7ÍoÕ „ 6Úd±2Y×’˜Î0M3ÛÝäS™iz5Ì/¶´ð*¶³ Pâb%'SM½ùTV[чßYþh`ÂÐÂHrƒ/µÈÒÊ*§œRÊÀ›XòÈþS¼°t ê:qK>ÿàƒ9µ½Úª8ãœã6µÒÒ <ÙX“RJÕÈ\3ËFÒìùè'çŒÍ5Úpó7ÜlcRpP&ç—X.)“—Í€ÅØ-´È ,²ÔbK/ÃCîÕDá´PjŠn2ÆË%qÌŠ0èvûuSrÖwÙǘ‚z%f‹#IÜQÍ:¸Ø"Kf©˜rw'š\ TȰpàŸj0Bc¨âP5Æ£Fá(à:þÑÊÃÎxG6~c’¥¤t2ÃY)ˆ“l£à¸Q7´!3á GKÑxF0P D"‰(D öP8Ðr˜ƒäÆþo&‰E`‚B蔊1 Aôá‰{8„'&±G`bɘF2б g¼i)UÑÚ1€± E|á £øÞZÖR±©å-ºKŠ‘ \HB v˜9Ú7‹W°"~¥Å'4a H  3è@à2pÀ… c8ÅÐq±VÕè€ä\•a [,#<ÙæN‡:”ˆòÙÀÆ6¼!Žr¬ Ÿƒ³”a D¢…æ°6´Á mXCÔІ6¨Á obú`Hˆ‚Ýr†”ªt³™ÕÌXN1ÆTškìl7= ‡:Þ±ŽuŒ£8éñVæ3FT â Y8Åìâ®?õ©Oîþ²£î räÂzE+$% Pp“ DjàEz  °ø}XŒqã°dÉám(£¹8F:H’ mdÃu¤ÜY*KªºqD.ÜÀo@Œû}ЃÔp4¨! i@ƒOÏ@†1 fpà ZpñÒXI E³¨þl%&CÒ’Ž´$$©(*±Æ6Äên\cíPG:Ô±pgäR—0ZQ,0a‰A€ÔòFaˆ½°ÄÜà pP¨s“T(>Ñ LH¢ Aà‡ |`\˜â,ZÆ…C! á7ô‘j,ãÂHÇu–Uzp$Ýþ‡9ÜÆŽi ä*‹Æ+ð€…)P¡ „ðà†3— ]Î00Œ! tøƒ$bŒc\-¿²fq¬d,æXÑyNuŽCãhng%98СŽs¸„ê ‡7¤ñž®`…-¾øD’`U”|šË_£‰,œÞø§…ü˜ R„–¢doÊ~*!¨Ád1ÀTaì’8úF7êñ-ã¿ém5‡Jo–dß9ða2–M˜ƒæà6 eƒŽj2„a [C²†1D&0Á ¾` ^(»*Î5<çŒT n@„,˜¡$šùêhÌ0†þ'ÚЃˆ MhÄ0˜Q eüFe]eŽDR²jD£*êúÏ0b1) ½8Œa×` F¾è„È Œmì¢w™¡›)(ÕXIâ ;Á"‰Äà °Øl:ÈAV…#Ä8J8|DŒYð¢%ÓÜ)uvRodrFC™VS¡;ì!qhƒÂÀlå–A cƒÄð…+€‘–Uä4` P  µÀ‰ì ‘³[<—E$q QT£¸]“¤ÑŒ`"1H8à l€\ Ã1:xÛtãÜÈÆ72)ëjãkcy‹."ñ…&¨Á zƒ³—]€‚ÚÉ€†/þn! XÌ-§èÌ&Zˆ,ô€Ó©=ð‚*¼b³”¬M«l³ºoˆÃ×X†0f±‹qXð‚¦tñI¿1ÚxޫđE¢ð„0€Bƒ  ôІ1Œ¡ f2 ]†3Ða¬(†O¢ˆi¼³ÛR–˜³¬ä°$5ëÜoÒËnÄT×ÈQŽðWS®¾ù)/0¡†'pÁ&T^Ý—_ˆâ a0†2xPX¸C¦ÅÀŠ,øæ1g$VÐU༳âÈ‘h½‘£nXc¶Â…ÑMÆ9“±ø»ñÆlÂÁ á$)YÉØÄªP†>Ütp{ÙË>L3Œ k Ã Pþá _4ã=F‹FTžó¥k0ªÓÏ‘œ!ÎU‡IÕxFó’óz³‚Þ8 7Nº±s ãç#åEñ¡Fº` i ^` €‘q ˆ Á `pš× ½s!ª “ruŽ…_'Ð)“uàPÐ –1;×s´ç ÕpZ$'¾ñtz÷9zw2%[òµ 3“,ÆÑ °P}ððzgPipA…g`=¥w0”𠺀 É¡,O¢2ßuMQ•$RuÁVÚÐ Ý@Ñ $ä`óU u²Nca Âð ‰àJ€¹`}„ „B c İyqã þ®  ¡÷`C ‡B`2‚ '°®G1çða7r#·‘@§ iS »wMRõt+Ó9»b:ÙÀ D,AU‚%m7 ÷8Åy BåSkðKptЂp ¹  Ð@3Ô€ `q‡VPÆPUÐfƒA Ë Ô J}‡#ŧyÓà ZQ_| ¬°`àu ~!GñW(~E> ¢ Zð Éà î#Pªr `P™ ˆÐB€ XY°)P¦`*ù€õj8RV·±:Öð#ü‚kz÷‘RUUf–]Õ`UôA­’ 0ƒâdâ%ɰþ « ‰pSÁ%Y7:é}°b`Q3 c !à,€Œ°“° ¦ ¹ Èð%销V_c! º@ ‡ X0³0‚`Á >oâó’ ÀP g@¾Ð· '0”b)“°•DÐm ³'0¥ ‘çð*„#dH{¶Q É ï3[vŠž“]¾ò+ß5’Êh$ªxJ=Ã~wÑñ’3‘4×òâ¡ A±&êQNá&V± `Ñ ² † fÀ±P ÈÐ.pä.~‡|Eí²FrD ²‡Q lð¾€ #‡­À œaP+7 ‰0D ¤•þ¥$0£`*1rI¢E†Ý@{ÜЂÀ ¬0ÚwÁVBÖ43”ù]]ÕU;8°³2•éU˜‰Š^õ+ÇqGñEÌ`⡚Z“ ë² ïAZ³v¡j”qg#÷ˆ¿à ¤°U° Êð ¸`r‚ ¢7H–0 R*@jŒd0@ð‰c5Òsààw}—ÙÀ @b ªƒ[Ä+Çç…ÀÒ$ô9%Ý,õ LÂ$ÕA)ä)Ä%rš41&àAäqÍmÒê6\‘=óaŽp Ö¦åã ¼ aÀ ¼P ý‚rØ +geàP‚*¨þ> ¦²è`‘†Y†¹aR1X’Í` »p –Ð ¯@< "`F mjœ B(²h¿ q¦ºÝç â À°ªŒáªÊŠÆñ¼‘«½À ¹À “‘ ¹  º ¬º€ ÇŠ ¸p ÈJ•Á¬Âc ÏZ –Q ³p­Ø: ¾)¢ðw†P e! ²/˜¡òó`›p “Ðy -:¨‚Jà9Ð ¦2ý°DbR©¤98Ó]ô7&æñWc á±&ét5Þ’E“NGO¡šLA.Üc.ñ.ó¡±õåFÐ>í’¦¼GBœŽ–ié€|˜À°þ¡‹±¡«º«¼¬’Q¬Ê P²à;ω )7 ¢À§–àu€"P@ J; )À™€ýðü°¨q©‘íð Ö ~]CR±c1¶#[¶âWfƒ– ¨¾Pf €AÁs» |è Æ ³.{²ªhq«ºš«» «5« ² Ê*¬Ãš ÊŠ ”ñOÌj ¶`³@ ×j¹ ¯à ¯€  ”bP+ F{´H‹´pp:° ñ°ü൑ ‘U›÷PÀ¼õ@ÁK¼Â[¼ô`¼À›¼Ê[¼Ë˼Ǜ¼Ç½Ì+½Õþ{½óp½Ú ½Ã›¼Ù»½ô0ß+¾á+¾æ{¾è+ê;껾âÛ¾ò½÷ ´»¹Ë ¡»qæð *ù,Yª°ß'±E1 YߢÛ#':iÑa‡ßãFh1¶kœ¾Y¶»I²òWhY}Ây ÷hj½º¡;³4;!Âj –Û ™A šÑE Ð S;Q»©qµa‹º1ÄÇ:Û  H|:À Ç·Ó%NÜX:Åd’4\‚&9!]jÖ•¦YÀÌ3'à2±g±hñ±Þcj1  qD²q/r| {‘ °³.L³ )•B þˆ`Að(Ð_°È@©q¿0Rle±×¨´#¤’ß7 ¸` 0 µÐ¶sd_Z³ _1€ë²'qˆ jª.€vÊÆã'j¡Fb;Á¦¼´>¶ŒÊo ›* ~`hY²ñø'q+!<’§Âb «Ð ‰€¨ yÑã ”a¹&‡ræ „D ‹€>  s2@Àp­á1âR—„@àPþÀÛ0Fµp è ’O7™6f,Éb;ËaûüÏCs…TzÌò™ôç%VhÂLc «4»š¼šç×&sârÒ S!¶ý±¿9 ïBG£úª­0G  Õàþ ¹À/sc7‚D0ƒ0-À“å)–ˆ…€ S‹*¬Vàð*ä üÀ@Ý  ¶ ûk”A¡“2óiBÝUe–]]8oLŸXÕ9+Æ9+áÏz~T¥)ÄΠ&:᪙O!±Üë$Æè2¶ê‚O`~A·À Šx ØPý³›ÆXë ~ /@Ó 8ÿƒ¹01éJ¬òÓÁ e Ï@2„AÊÈŸü),0K£ƒ34†¼‘k*Ñ]X²íÚ3¡<Å ‹°þJ Œ6Oo±Fi:œ»` T0Ïä·°ÇðS ¡`PeTPÞÝH!`™¥jƒ1(øÓÑ£Å` Å yvÄzÄ›Ù:Þ³í€J§³AÅ j nЀ°tÐf`CÕSDeTdPmp…  º0 Éñ’N^Ÿ,.,5Ó$*Q &qRÀ7Và°îæpÝ`ó` m š›º€ i€eP ÆÜR×ð ½ WÐÍð »à>&÷GS))zH8€Óì—µa›¥´Ñ8¯v@Ý`ñ ]>âè  h®RÆß3íLóÑ 3ƒþÏ«0U0W —\y¾edeÐ]ð]0vf÷–° ¡ywŸŒø¬ŸP­U/ _r…OzZïUN4x' ª‚#ãÀ -± 1Î5eÇ%KfŒ˜±]™Ðù °_Á‚ vQFa¾:u1“¬[.[²`¹ReŠÔ¨Oœ2M"„EG 5kfà ¬|ÿò¡+7.\8pE¿ûvOAb³|¡ÓVíšµ©×¬b˦¸qåÒ­“F­Ú´jÕ¨AC•gO=vÚˆCfL1`ÂÈ¥ÆK($6€° a …Yl:ö,Z4iÕ¨J23ªPž:x }q´ÌÕ²iÔ¦Iþ“öì™-*P„ȺB .dò¶7nÞ¾ íŠNµcÉ”èXÃé4Ö`C 6È@ã :ðä“`–YìgáÁžR¯’÷²Î>ת¸CÝ&ÒÛÂèìišYÖoÀ‘1†/Já‡*DÁ¿(Fþ0B b$:‰ÆF†ŒR”A ÀP/h!‹W¬"§ð'01 D|!&àRƒ ¤@ ©€Ï»Œ‚Ûp£H±†2„±AYÃ}‹PªTÕš ˆ~\Ù†c¦±˜(-ÆkiK†-2aˆ>ôáØCî07¬¡ lpCîà‡AD‚Â0†.th‹THâ +Á&1 _`byàÈB³*žÎ–‰êãÖmk”6m>8›OܿЄ$ª"‰\Qq:§*b㺜Âe.Bê¥â¿¹U’yÍk1ÖÉþ ¾ˆÅ!˜°dˆC¸¨E,†ŠSŒµ$á…Œà«)L,ðt—ÿ؇:Ä)nôwó³Ê´Ìò,jDCUг1Õì˜àýNUa ƒÏ6ç)9q‰²UŒm»% ox[&W ©êÔâ6C¸ßT®;}σ°xž “½ ZÐ20¯–Ƥr|Á‹]è¶òV •\t„Œ>°š P`¯¦L`„SàÒÿÀ5®ëQŽnXƒ,cé)ŸmÕw.‹¸Ã=6²‡ëû¯ ò“A˜U{Ý«­åd+[/yIKRú®–ÄäBÅ cå\×MSŽÓ=‘_þøB`7æE»}Ñ‹yó‚Þ½à…½u¡‹]t¸ÈÅ¿oQ‹ ΰª`…)L1 ‰e‚pH ,@Š¿zL\°Ftc·ÎuÈý1ò‘ãšäþè‡R®1 F¬! ?˜ Pp” $À9 lžsç>'Ánôýæ#Dàó¢ÿ\I/:Ô‹Ît¥'}éEºÕ•t©‡Àë ðzØCv°gGûήöµÀín÷@ÜáÞĽj÷@8ÀºsÀ{ß@¡6AiL©ÉÀ8° JpÃ$x1ŽzðcúøxÈ5or‘÷£ø ‡;Äák@þKžk%g9·z…ÞÕ"Ü÷Œwݼ:n¡ÀX _›ÓÉŒ Lq|ÓšÖä‹å,Žî½ß‹]üÂ޿ا٠|Û»ßøît¿÷­‹\ø›$žÆÅ-~‹Û‚³˜ÁcñŠWÐƈ†7àÁ‹|äžç?úAò~l~óþPŠp؆³nÙ-©Šª›ª¨òv®xj*3´k'4¶DK.f£'èJ†Þ('Hœº “‚ ¶šIªƒº¤K«4…P(qS7Q“uK·wó…l˜M£·NÛ·€8Z/T(RàB(ƒ/(d˜‡üÛ?”ë‰\+9ÿó~xþ‡-› mІ/à Ê©;C›my†¨Š’"á-$†¨CK@ü° ¬ª T';§t".C+¶â.BÒ* „.C’4éq2¨¶Jã6j pŒh€ÑÁæ@>êc¾~ ÂX€ÍéœóâJø* ‚$G0†x ?”{Â)9}0r@uÐ ˜²¡ÙàB b-+&j"'›h°QŒ=ûš†ó0c1¨J'8¤*ü&â1¦B'cS´fûC¹ª«‰¶‚ª+Jc B 7Ú›±›ä…}2Y¯‡¡=Á„JX„4 8>†y¸5þÓ~À‡rþ8u8‡p0™Y´nÀP1h`†d†^¨V(…Oø„PRÀH…3…S8TH…TPT@…”àÈ" …Š…P8ÉP…–LÉ—ô„“üUJÉQ°ÈO…‹…P(…–d8Q`‰Oð„ðØ„Nh Nà„ÅÊNÐNØ„MÐ$ÛKÀ„L¨ÊªÌK ÊK¨„I˜IˆI˜J¨IÐÊK°„J(KJ„®Œ„HðÊI°´´„&©_XAMã ÂW ¯ïøKˆ„@˜‚èÂÛ€È5°zø‡*̇Ï;‡r0•^2W n†þ°U˜iÀ†iA0˜ñ©ž2›Uéšþå™­:ãÅÜÒEmF ã­Ù4Ãd 1‹CuB@ßp@=41v²@ßh.f[´ßø’j›.n[(†r`ØUH„0`d°^Ð…‰:‰$ðÀ¨Jh:‚ÒY! Pƒ`°‡Çô|8‡R!™’‰}ø‡q¸]ˆ…ú ƒ Z°ÏPžnÁ-ØÒEÆ Ð\›&JÍÐ8ôá&$ѰbŒÃgœªa+®âzÀ U§gxÀc[4d€®¼¶rÊFm³$…²®ÇYœ_Ð…M.øh\BWµˆ Šy>pØ€›8 x-X…x¸5öGѯ’a, `°gˆ‡bBþ¦Ta&jY0ÚŠ­:ËRÿ”­Ó,ÐÖÊÅ]Œ’¯á³°ñšÚ´ ó0«ÐäC=Œ§gL¶â46,$·:$q‚½€²®ÆùX8„!(n‡[ …;á•ð„MÈJHè(p@<ŽÉ‚8†}øödù q8RÇ܇ϲ…i°‡N3!ÚOþd--MŸÖÂÒÅ0M;M  ÿLM¡¢YM&"F «* t†wNd³Ðd.0©ÓB’+àèFáPÎIâˆÅ‰EH>Í\²VH Œü$ƒ„?˜‚(”ÔAð4Ðùü‰R™ü¡Ìsè èe¸h¸¢r ÓþÒÏýÍ`;Í7ë ÒÔU˜1&ª€›ù™ =®x’FäZ{i ``>]˜Xp¿_˜“4 9lX­‚Fx"¤e§x’¶¿±6hEÁ¼’ Gœ…FX;ˆ†n¨…ÂÚR32¦´„GxÔTC©Ø2¸vM‡N‡]Òs°µoX†s{šà¹Õ3k&‹3c¦™3tɆ›é†þÂ+Ó_Œk1Ã?±nrª4|C Ùc†\h…Op„Lxb°ª9•Fx".¹êCHCN•5Û$5©…Gp‚8àx¸u,¯ˆáK@ÔÉB¡-\`r ‡¤% þ¢‡tø‡~È{­…f€ÿ*ªeB-U¡RC&+*«¸†¹[PIÈü|­]œ3Ú= Úä¦A£*nRS;gH`R¸„FP„C(B„A€Xc†R 1¸*˜‚;PM(WÈZÆ9´Pà´ÃdT81¨Yè ¦º@âŒ6º ŽéÊ+lþ“‰ÀG0‚:€q°[ÈDUàRpß©Ì((¼ÓÑ¡%Ðõ t0‡]Ú%¤ÐuH]lHb …fh‡Ð”Š"úµé1c3•-¼!þ*&0Ó`|†axMPC8„DaAè<¨ƒ9ˆ9Àd9€ƒ8hOp…G˜ƒ?¨ƒ*È;`ƒêŃ* „L0H`„IH\†#™À:,6„8†`øä1ÐO†F›‘G+bï%D•µ$ë †[€„˜•q b…ÎiÉo}‰A¸è€Â£TÈ1Øß4nÅ¡PZY‡Ô͆„ f¸cÝÕW¢¢ >¦Ú©¡X)Î MÏþȦÅPX„CpäD(?À y80h‘ƒ9ÐäKž;؃AÐX„Dp:p ˜‚`cø„A°">DX„E`MX…bè†u`‡p€e@b•'ß]…=x7 ¼—CâF·º«Û$\„$Yrø4“àVïÈÙ— Ìðô¸‰ ƒo·thEP=vx—ÓM]mPc eP‡Ð´ Tõ”š9k¸™›aÒ;— †0h †Q0A0„B„éqƒ É8xƒ.r8Ð ‘>@IZ $‰áBÃ)±Zd…MˆF€IÈ„3jŒ›Ù rpþxXrae'¿¹S^ð;@‚5¸ ·¶r1„VHÒ…Iˆ‚<sØ\¸XnÅÙ#«˜B¨ðâõð[è }P‡¬]Ò‡r@9°.†[X†tÈùénñ]t ³t™”®hÅoÐ#zõ¹…E„A(¦ƒ/Ê7`3ƒ¨Qƒ5À6€ƒ<0G…^H†Ùtƒõ>Øë®©Š„ÛsX‡uPvø†b<.pÁa¨V-h‚KÀ=ÄUÁmã’$†]„)ƒg]¸hVïàbÆš„A¨‚xj¨VòôZ™þU»¹ëV]Û±dPÿþð® ïΊú‘—VL—Ø)j?Ø£?Ð9H5ðrþÎ524¸:H(ß‘h †k "þ43Ÿ¢–ØžöÙÕgˆ&ÇÛ-Är˜ðWL‡pЖßpXm,†jí'`ß[ ÕÃ*…°´ŽÀ+€g‡ëä  nñ îø€›˜, .˜FÉꤥÛ‡°[0†tè2-쯰 [ÑÂ-ü󎇽9ë­ý…E¸ä?>È7ˆš.oš2€2€‹_Q;0M …aÐs`“ìÓÊOšQUÆ:Í1»†›oH"p`v@tX‡¤Å†hpXñ`þ <`*‹°ˆ¨Ü^¨ô6p†/,W Ñ<™qÐ!„,ÀPW! 0õ——6vcpè‡}¨†°¾…aXp鉛l膬Àq0tÐ ³1{Nx,À6 #?¨7`ö3Xv4@ƒ1¸88ðI¸b(ð7“ìUYŒ±-ƒ]pj3©?3©x›-Ì™th5F‡ov‡jP*™þ’D?+BÈÁ‰¸´»®ÅÙ.Xgø†\¸…ßÖâöM¯I îõ: ,xЬŠ6¶oÀ{˜†e0[uø²¸QH¹IœÉrh‡þÓjŸbP/ˆ‚)þ?°6(ƒÖ'ƒ.Ø‚0È2(7ØFP…_Xˆs23©ïU×R°Æ˜]ÿ\•ë©àaŒ„ÄnÈÑ%‡°-®È†gت<†‚DÀ#„@¢å°®…z“LЂ2`†‘¸ñ:¬ÄúI(+ȈêŸ,à Ÿ8Zù¤È¯n°xˆiËŠÉú¥ŽÛµkØ*̆ ›¶mÞÄ•‡ï›´jÖªU›F-$5Y°hÉ#èOŸ;rÐŒCfL1`Â|ñBFÍH·‚ëyŒ™4jÓ¤Mó8cµ Ò–e:t©Ñ£Ò˜!c¶ Ù¯bÊ-ƒþv,´jßÂy뎰^ʦa«ÆìØ1cÅŒÑ f*“$•€ æ Ø¯` Ö·×&/g”qëEKÖ+W«P•ÅiÓ%I„®èá3h3°ÄÊ÷/_ºŠâÆ…îÛ7o÷ØISFl–/tج-\¨[¶lÛº}g.]¼¢Ô„R#‹Ož=zè¼拘ì.Çdã{$%@\(o…’) :m#´Gn&‘¢¤É’¡<‹vmh3[½âÄ)„ðAxÀA ’@ÃLsÑ\œDà„CÑ9ßLs 2p!CW1µ0¢rèÂW_¾F_ÁüòIe$S /¶È‹dþ§J(dV:—Ág`àÁ Y”ö>éÃZ8­½Û<åP£L1¸óPBÖxù›6ÙpS\9æœóÞFQ(yÜ¡Gt´QFvur÷ELal…FxpD0AX`‡$ó 4KU³@ôÁŠ%ŸdòK- \ÂH1ÓDÃ4ΠòC&€ A\ÀÁ6aIš×t3+7³‚CQ:âdÃL2½ÒeÌ1ºHB†iìL0} ƒ,a…ýâÉ2FÓ‹-³¼²Êd•y² &’¢#`@$åy C²˜–:å°fakÞxsk7Ö,3Œ,»˜£Í5^úËB‘cŽþ9åh„ÔPѼ²pÎQ]1iWÆe„á]dœ!†!€ðÁX°Â¾4ó TK=³2‰ŒÑŒb#½xäÔRÑ8s Œ1xЄà„%ͨi4Ùxà 7àŒS:騎5È “ \tCË"X0aâŠÈ.‹ì`iò?õr d®¨rJeŸp‚I%†pÁƒŸe@äª-@ÑŠiMVtak±ÉûM½Í¢‹9mYÓo—ý>¤MÓäSN[ÕP£yPÌ\¢FLÑ rôчkLüÒu^˜aG"©ÜÒ 0¼#L/Á,³ 0Ä(³ 3Ê<ã̧ÏDóéñŽzÔÑ4T=³þ 1ÎHãÌ2ÇüÞŒ3Ë_SÍÊÄ}N7Ò@c 7ÞhÓ ‡VwxŒ0¥Ð!…“´È,³Ã6 0¡Æ1ËðrË,`Ñ VP¦ èD&(qˆ-ø ¨Ò@¹2Ð@Áëj”,$/âˆã×`†0h‘ qôË__jÈ5¶± 2cËQÓòŽ1¬%<Á• Ä þ`6¸„ eø!Ä`±/¨aޏ…/ŠáŒfœ,ÏžUœAä!þj0Ã1Ëp†5¨ H=ø°ˆUÀHÆaEfH±Š\ŦV«ˆ=F Qÿ±"ÊŠ2ßEiß#œÓ ¦rp#Ðè•2ø`ŒWÀ‚$³"Àø1¡Í2ä® •^Ô"\…ŽHñ Mr A8A&Ë…>ah]ãš²ÌËÖHF0nQ q8)HÙ\+nPäÜ`^4ŠÂeŒ¢|ø üp6Ó hH˜Y±¥ÊÁŽˆE0ŠÁUãEãšXl”²ë,rñ‹\ôT¨¤è(/í†ϸ†G²q!q\ŽÙ°ÆÎ®¦WcÆÐBú° ûí þ¤‹~! 1la±¶ˆ…+XAÀ¸qK‰èÂe÷ÁÏh`MèäiÐÊ(M)6ßãÆiCH jNsîäˆP^ù¨lh£á «6–£Ö\bq—ðCü>ØA >NC|¬†5¬ k¸ƒ ±‰`\ÓSž‚ÊæÔÚŸh,G(ñ’•¯ü#df‰E‘Ke¹Cëcß*…'ðaÅàoa’µ,ÃÙE£(†¡ jÍ"Áª0E)F±­KPafõ¶· ¤` ÖÇ9B)Ž{˜,×PFeŽºÖµ/t-o(äq€ƒ_žÒ¢»» W(‚îèpÔ3™ mþhƒâp@<·Ë ,yZ]éeï)F©òæþÊr^g¡^¨ð:_c#˜Ã¼  ÁÃ~ÃÌ· ùmþ’Û0¢0C~‘ _x€© L(<17J$ B@.°7ŽjàIHÅg£Ø”Å,¦TÆ0fA Ìi¶%VSÙ“lÙjCÅÁiG×Ý/~±½ðÄ!qßâAÆ2®ã0‡]'µøI£†‹R`BSNèÀ æÐ(T¢"‰8„" OÔÂ)ÄÆ3äRÎà嵟f>1nÁ‰;Xa ˜ðÅýº-Œn£„,F·{B ¯†E¦ƒ€¡ _ð4þÅŽ¶…‰BÛ;ä*×6p‚"˜§‰t”âõšf{ãɆ-hAŽœ¶ÅQÑ©GdüÂd?ªÅÚ†—æÄ*Šo»Ïã…)ñ‡ßB˜.uÞ r<"… Ƭˆ3ì€ÐA-J1ˆ;Øvø$@ ]ƒJÆîšž>¸£ª@„ªÀYˆ{`¯þ·ÇÞu¹ˆ}ÜßF0Î]…_¬½í­HÜE!·L88 C°»ªÊƒ ˜€}Ïp()ÝìØTãð7*Ç{E\ä½–Œµ‡r\ 3”˜B¤Ð6¸†6hΧxŠY… u=ÃÉ UC.°Â'dÆ"(B"(#<Áþ`2ÜB)0”\)¼‚-ôB1T…iS2üN^‘-}Ñ'ôˆ$¸Y÷‰ÝØõˆÌE×]Ž]¸Í/ÂD/$Ã/°+œŸ)˜Â(È%H‚" G•Gyh@ A)ø»€–Ày˜¼¼Æ5,ƒ0 Ø8< Š5Üò ä…P …ĽšÈ– •š±åÌñpÜOYI‘VY 5ƒUd“20%fWÈ2Y&Ö`¯H[‡.ôÜpAB0Ä…\ Z_ÖÌE\*¾b×a·ñW²ƒ)¨¨cA+ ßŽt'd†"ˆÁœÀî ˜á‚þšÃ¤‰–áÎmÉa,´Â8¼åE\…äI™r„cäU™‰Åo@D‹a4üŽY¡UYQX-q3`$ZWdâ$j“ò0à‚+|‚"Ì +ƒÕ â,R[×ÁEú$$]8$°ÈÅ,Ò"ÍÏ/œ‚0/(Ã/à‚,ø*‚(x‚&Ú!£ª Þe Á(¨!àø\YX3CHêŠN%›äõáŒÝŒR€#QBYs8¾,LG<û V`ø/è.ÔBŸ‚'ÌÝ$P'¨B-¨%Ò`2Ð…úd‡XÍ6õŠ™­åúD$°Ìâ,†¸%Ëýþ‚)¸äºX‚9Ò(·D"ŒÁ1jG‡ü@(<ㆠ^Á©Pâ -°BRCš4G行õ‡8âS4EBÅS|J7.E;yæwâñdÇ5¢<îŽlRâïèãZâ• "ß&6] ª%'ö Zú“\0d-z[ñÅ/à¥D. »õÙù•I~ÂINüÉŸªˆ@|‚LJIátƒDÔ Bð-¨B8ÜVã!›‰u&& RrQÎ0…ÆéVòbn¡&¨`WkO"’Õ;¢•2¢=þN=Rb=Î#ðX…nþN ’ÙƒZ „bÓ)$Ev_¸ Ʋô`ø‚) Aºþ­›NÆ)ŒB(|fHÂ!”Á½aÀ¡ˆŒÈ€@€‚ßáÃ9HÉ””Ó¨:C.¤‚/Þ:žZYÙÍ̘h²æ“ÑgçQòègkº¦L £Àæð”.‘3$(i•UŒ%ð„)„:èƒzâÕlE\8d+rß*&TœI%0ø, d¯ÔÈ56)ìŠZÂ#@”€T¡ª€€xçi”ƒ4N7,Mp<Äšƒ.1l²-E7F`hRYi>©|^×§`Ñ!&"Ç•êÁãð„Ê;ZéÉté–.Q=Êj&ZÅ$Òf&’eUäÕ1Ü&‡¤OC¦©ª"†Ž[aø`ðþ,XB3½‚1XU.°Û¡Ÿt‚‚IZ$‚Ø€ª·R@xÀ t‚ßù<Õ… mCùF Qƒdb1ü‚.ì/ä‚.¨V-ÈB,8Ö+¼Ž(+$˜+\a+´BÁP+¸‚ #µÂ*¼*L¬*¤‚*¬‚DéH)„Â(ˆB ‘dÇj!Üla'œ¨É’Â(š(¬,(€B„BIzÂ'|‚'t‚'ÜlÍάÌr‚&l‚ÏfBÏje'pB&m&ã&pÂ̺lʦ‚+Ø0CYC/èB.àÂcDTšh'hB%@‚!| lœ-ÚJð€¢úÃi˜Ã7PÎ6„þÉntÉ-%xEišêv]WªrÜ•j•–j$Σ=â<"h=îNð,h®ZEòqâ„öf'®%‡Ìׇœˆaj_Øi]¹Ñ³RrF¥/øB/ðBUâ+.à‚-`%À¾ÄŽ$Eñl%8Â(Á*LÀÙN€„k „A0ìÃ?ïñúC=€CÉRÐç!^é2l)‚2.ä^­:îXjâîèf®&ߘv" ^MZžeæªé‡€ˆ,'ØaOT¤qœÙø!T_$'r–îéöÂé¢îþÚ+/ì‚. p´^%-ÌÂ\ádh¡úm%ÁJïJðZp B6þï?ø?ôòúƒ?äƒ:à‘•=‚©>ÒQ'Zͳš™?Iä¯Â1ÃöÝÎÖ\ƒûRd*¾™*kOdßçëýÒ-ú‹T‹ì/éúÂ/ îó‚óBêöB/h± °UZe.d­-Ø.èkµ pÛT¬#‘‚'\‚!”v^Úú.Xpl äÀ€Â9ôC'oò’°>ìƒÛúC?$ò>ÀÃ7@ƒ.¤‚¼‚) l¿²Â*À,,¬ì²ÂlÁ¬À.lÂ",)ì(¬ìJ†'«‚ÃBlÄ*ØÄÆ2¶¤¶D,¶P,ÅZl* *ür/¿Û)œB/Ÿþ*3*¼›)ü²)œB3KgóHfa–‚5“Â5{ìž’$]B"ìXÌ@ tÀ *ï‚«ÈÉ Ð€ÜÁ+xÃ<„0 #¯=0?ìC÷ ÷³Û~ð>Ì:Tƒ/”Â#øAˆ`XATHÁPDüHôDC4@@44XtFSI?4LAX´HWÁDŸôIWÁTÁIWt˜Æß³_÷µ=ûs?èC=¼<°C:œÃ9¸ {YE< hÓ¼†…„Ò¼Þ†Áø˜…hÁË8lXáh¶kÄF£ŽÅÀ9ø 8l7¬âÌ ‹ID70Mù06XƒP7°«pT\D´vD°6lƒpo6Ô•CDêrGrÓmq‹<è?ÿõƒp>$r=_·ur`ÓC;˜óNõÊæ Ò Ú*?©Ï„ªOåöª{_î6Õp gMúÎÅæË+¾"÷ñ°‚qØÑ¥÷5 øq¨‹ HóUö/sñ.<8«n½j±ëVKHþVìJÂ&Ð7Ìó?0"'2=÷swÿ3 ïƒ<r#ÛPtÜ•ŽÕ–jðܪ;(®"n>(Jn Ï=Z&dZþêp9}û0Ô%á°rRÛk6KTRýF•Oñó/—0»nc…$ÆŽB%ìÁÈÁ(xC>˜ø? 6?$/?‡ø_“p= 8°+—è¶P”jY!.õÞc%~)öÄ&äŠ$‚/ƒÚ` óãV”i¯RîaMoöÓ¯~ˆ’Ïp\Þ÷W“ãpqÞθ³ŒMœmh`phœÒNþîïƒÛë.äBâÑ‚½ÍÆjB"œäÁ/´>$rœo÷'²þ_“0>¤CzFDŵk¿0Ï©)bX…ឌ.öpÕ<ºâfû=†i­Òf¡s/WÔ`¢—)¯6ºúÌѹó·…rßpŠ×!]*qqÚâs( Iqƒ{y¾VK,ÈîÛ4ð uÁtA!´Â4ÀÛr^‹8w·y<Ôâ·o¿W¿¥!"bª’•;¢#6"<2âÇî#Ê* W/UÃlR¢÷~/øÚ &æ[žÕ°\8¤¥o›a”ëpA5 ©+xœ–.ÿª®Ãú¸ÝŸ&AB<Ü.pC=°v³ùñöC;´:ÌÕÒp²ã9f¢æå wQ Æ—àZþQô¦ªÇǦ=n—Zï—îÎ#2îÝ3nòÉ&?–)[z¯¦épê÷¯l.Ôé<-ë¸i¨©Kqœ¢®ïÂU:ÄJ”úùˆ$üÁàÀ@ 4 C<r?÷>äõŠC×›ÃM‰§q#ûB¤ l%Œ|>ineWʰ&çÑþÆ9Ñ•R)Z :v)ñ_û#B‘Õýãro™ý¦äÂ<幚"!õû÷€»)€ýUp¾beHþ"Ü€‚Ñb+< ||À ( <ƒiŒ8"“ð:”C:´ YÄÓ”»2Ä-MO6]@ ;6ðX1‚ňKxÌ1cÆ=,VÌC†'Ó(þ±Ø0f¦qذŽ#‡,˜°–Ã\&Lذ_2}»ùË×M_?{öêõSè.^FÝet©.]·pEzËÖÔ[TmÑ¢Š«çLb€ýä• —­Y¯X©:EJ¨N™.5¢3$Å» ``e®Ÿ¿}øîñ³7NÝ:tâ¾}óÆ­›·oà¼mÃvm³eÄzÁúT‰Ñ!C‹*…Rk­Z¶ªæÊÅk¬-]ªo]¥ •ÚR¥L™Âj-)R£|“*5êªT­Ð²j –«X±^ÁRÞJ¹ªT¹£ê=üðQ¡@ÿªí'PáC‰ï‰Óyð¢àû†?ª­(òàA}òäéÓþ'N™qdQn1¨˜`|Ù%ªZ [å”SÚòD“J$I @È  8@áEÆéËŸ¾ð1§sÄ œÄºi,r¾Ùæh—Ü„‘†ši¦‰†Çi¤‘&š!¥&!‡|ižy&Hh ÒÈ)£¦I(­t¦É+q¦g²ô²I/›ùò™2¿l†5-[Æ2e˜Q&™f–©ÓÎ7“YFÎd”‘ód’ tÏdþLPd"Bt "¦$—´Å”CÞ°¤˜eÜ%—Ydq¥•St”ÿ(qD#JÐ@ƒ 0Øà$&1ÇŸýÁçDWt,1p̹glš)f—VpÁfk¨þÙ1š$Ršiv 2Hg±”òÈgŽŒRÈj¯¬RI,µ<ÓÌg´M2ËdÆ2:¿\SdÜÔS7Õ×2Aç4Pdú|—!D5ÈŒ}”&•~Ùå”@¨àÄ™d‚Ù%¶X\q°Q$ĤGîH¢. /¸`ƒœœ~þù§DÃQQ±n›çtžÁ dÆÉ¦š«á1YfŸ•VÚ# ²Y‡¬2i¢«´Jr§|zËoÉS\sÓESM6Õ¥³^yåeÆK°çw>Ñ&´"Žx`FKúª¥ƒUòEšP¤e~ÁeéÔ"%ö4)U'VØ€Õ ,¸àÊÈÅž”þñ9§rV'sp‘›c€±ÅsºÙ™ÙÓŸýñG!§zÚ¤,zéÙ¥´j©•¼Ê.»4’Ü4Ù ~M7÷ÛM³ÕÑ~ÏVôß¶A"h ·Š»šÀæ—^J±#‰U¤9&Z`iÅASHJ"ÙÉ8À`qùSxâ’süù'ŸsÈ'œÄó˜uücØ8†/j±Œu`£;³†é’-j°Nh©[]Ò‚V4×õˆJ°‹Ú’¢±¥jAL$ä]ÕH¸&®ÑK]-´WòT&;•­Oi#T¢Î¦¶ä!o#Fõ`Bí#3… Â"z–À­EþÑ„%ч'¸ ZþœNP„<,ƒ*CÇ8È‘¢ÿqí à5’! [<#”i ²’e: ­hs¤Ý’2Ø£¥µÎYTÚÒšôÇ+M­jår†Øœ±Œäµix3\¿”¡¦>Y&NuzŸä$ìÐPiÛ?òà ®A®0Q mà‚A®Ü(:±‰LTâ~ˆ‚ 62]f€AxÃ/öáEr„2-‡8âAÀj(Cµ˜=ø³Ÿ©ŽY«3Z€†ÁÖ mŽÒ:‘4»púQiN#ḼtÈ­Õé^pꓞôÔHxž­†Ú¢:Ùõ1 ”%‰L€! E$ÁÒÀF.j!Þ”"àÄþú¢xK¬ŠqÀÀ|°†]èC&"GËÂqLq˜ÿàG6–1 [LcרÆ­áRjôL‚œ#žå£kîÔ›@êæMq4lJ°¦3}©Q!Ø£"=ÉvMÚÚØºf<䱩_|‚¤ …Oé¤!@L‰g¡ˆ#ìAÙÀ-(fQÅòÄ^°U-.#ètÁÑÊ]nœÓÑÅ~xCİ4ôñÀ¾t±Ò<ê¬éMnRóY;²lãØÀk\ÃØð,6¨ñ u)#$AÜÞ.tÁ °c“Ϙ†’z§NæÙ “ó¢óêYÏŠêO›^A4â(B ¯`„þò0 m\E­  [>±‰'BâïÛ䲋òÀ ¸àh>Ð1ÌŠ#-GIýÑ f £Ñ€‡K«ÁÙÅRótÑêMÙgɱ3µÆ±¡ldcÙ!4Ö¤%oõnjX:“ õ^ÜB«h,pq)§¶’ùú“"ûÅ<|e`¾½ÈÀ‚û•šüs‹@¶ñŽñÅ‚:×Yë&. ?Há`v-J‚áùÐŸåÆ‘¢¿†c$ý‡?¾AZ[8#“‰é­AÔ-uÕœ N‰šY£ÆôØÈ†6¶!™ž! II‚F3È5&r)ÒK*ì’Ö(™HdãµHÅ[Jþq d$Ï’¹}ØìiOCm IŒZ4B qÇ<ÆW¾Uh'}Êq x¬8ŠZT:(.Œœt”£ er9Îq”EYÎ6°¼X8V“¾_Ž . ­Æþ·ÌÚ` 7䛬iùŽ'Œ³!¡ ç:·0]–©32ˆ± Vl‚‘hE1Ú$(H¶IOµµê¾ ²Õ‰ l¸/ ¥åÐx°2¬XE*R‘¾MlÂn â'?ùi`CFµþV]òúUä`?´)[4#Ù vcw¶åéHË>ã‘éèßÍž¹Eæì•wôArmËÍçÜR:»”`r©°]ÄK%—qþŒaÜÈ|p„-âdÔ«¶ƒA*2½‚yÄQºÅ#”@nÈ#FË*Ð78YJRˆ4€] \ ¥&rªÏaŽ’¤ãHÇ?úd ƒ΀®±Œ¬þÖ7Ì?Ëx‰½Y3k£1ݰŕ­(A‰ÍDê‘Së¼È3ñîÎcâ]<á4¶x­ºH#ÞZô6Ox‚Só µ/‹ä" izLBõ:d¬”Eù:8M\b Ž7„] Àd¨EªÃ›d–—²Š»ÎiÁŒvD“1],- -ŸÍt=y™I®¹n˜¼ÓrR9µ4´7'#Û°8Å'0! þGø¡ ‚„%&A©3(b§€….‚ÁæD‘¸†‘nË’Îfnáþ€ &OòENÊ-ÝÒmz|È#¾ {pàž¨‚bVÁAÒ'º>M d ŠFàtàìÎ’LŒÊkð'î’¡lAú8ëääkï¼ ©f ðb*Œ¥V„Ô Hb§i¼¶ÖkHáá<Ã3à b–á6A¢àZ€¢`!6d!~ĆMâ ªäÅP~Aa Þ€XK夞¥“eQH"”Rt¡Ž€¤!n¡dáZa¡šh0!! fþì4dì0@r€ ¼KÐá’ŒŒjà.°­î¦O± ¾®¯±ü-À¶Á1Ž ´(h[¶¤J–!1Á! aþ@ì äãÀ Âàd!Áö@ B@T  æÀð ö.A6!l!’A\èäx̦†Ž!^!È€ < É“"pzŇB¸h"%v!”à¢AXéo\ÉF¡?0Q VP~¬¨ìp@ ŽÏû'E8'¤îäŽîœaúpñNÎtvæŽêFŽÀ¾AEJ®ü¾II¼%l¡xò!öàæ@ˆ2þä Œ)ßàZal ,Hô`ö úHŒ‘PAµŠáÁ\èôÎæO‚ ºÀX¯"ø.“AŸ~¨zPRrA˜ ¤AêöXA;%² f æ A`mù.Ç#[Œ.沘a°l³ª¯úrí`êÊ6 ͼsCF~v®dpaÁzRø èŒrlÓ6‘)‰ö aÁ d P` áéA+û€&a,a”ᯬ^)’LO ”Á¸g¬ \‘îO0pÝ&¸`&a ‘p!þ64 ÐG} ó0-òAÆ 1MQNE^DZ‘ýfAú²¡‹%cªúâ‹ØŠ0¸ÉdòÄaÊσžÁ>¯x²`sÞà Ü Dã€Dß@7Ã1üÀÁdáì¡ æ xä`aÁþ!<Á”!ÄAÜÁ®a¦M’òPŒá6”`xÅ(Bzœç<]¯$Ôs ò@Êá=ѪbNa8ü#þ¼Ó>uÉ¢BÀ`#ÁK“Lî!ÆÁíZ‘´,“è¿Nãë’%Áo¾Œ>Š®ñ„Π@Á Á´°èþÀ Ø  ÚÀ ààSGô à Dáà–ó,¡*Â$&õÉ<3"r¡ ¤ÁxÁ&ñÞTáb<á-( ÓÄŽq0h  ätÕ> ò”sÆF$H‹–A,îä>“³&ÃcÊ̸^‡é¨ûh©¤ÁFa ÁC÷D;Õ Ú`SEt FÔ Ü ê` AB!"‰„šðH´¯û¨!–!b!TfÁœáAÐáØÆáµ‰Üþì© hAÊ@ A–Î!ÖÍmÞ†Ÿt¡¢!Ïa!›C-ºÃ-âϦ€Ô5», nà âUí–ŒíšoD ¨nAÈˬqí´a³vð¶ùdPÔ¾œdtbè€ 8ÖcÛ  Æ` Ô€ BõD÷ "!z‘ ¡Yž$uòëg¤KÈ%µQµÁ̼aØ¡ ƒ„äM :oJ@t&„ëiC‚QP,Û$ Rž^Ás>1‘¡k= ø´+l€lLÒa˜Ä@Ç¡FDHëH2ÌÌnãÖ³zPð¶¡^䯾p­Tgþ,a¡ì  w Ô@SÓ Ô Ô` ìw ä ¡tA‹ær7SØÔ×h”eœ.÷¥6+¾²¡1îuÔAÒ¡¢Áâ‘ÑxÈ:Á˜ hÁ%â¦$ªõ‡Ò#x¡¦€ A$F(&0/æÌ•° :À"Çî@ º`žWüó˜Z†^­ârð’Á_‹í@½×{ Í"ôVhJvjá!òì·~٠̀ Æ  Ò€ Ò€ ê€9{•œd²,ZºO}Mû††G˜ÆGÊŒa¼!.ø‚ÍÁ¢¡ªœç€Dᘠ `a=þw $nˆ,Á âàüÒo`¡|äó;:ÿ á lT%ìBÆ]·@ŠXíò4‰CŠüb$Mê¶³À×nÍìð  ‡ ¾!4‡¦ž¤ !áb“ Ò šË¸ÕÀ Ê  È Ø`ü >¡@šÁGˆŠ±p*‚®Ï¾ºå"L@‹øV¼ÁØÎÁ0Ò¡ž¹AàIõ ¢8Á €„a¢%‚¡.âm43. ÜÀÂaÀõjQM%„ ¡ nà|8d<€^Ù1ÃH¤R$OóSnáÔ¡¶Íï³%V‚é˜ö…¡0aÃáfX:´£HÁ‰$¡¢s ¾?qì>€´ »#i™BÁaö¡˜A‰á¤ì—uÁÑlcšà¡Y„M ¬@ Ú Áîà Îþ¨É@ È ›É  Â` Øà !|›Ž‹[û0매¡ü²oÙŒd«U‡—SšÎLÒøçÈ—ÊAœŸði.³ Œ p!&R#jâ‡hÂ2a Ô€º!šðÍ@=2A n CÇ0 ͵–÷;Ô.Œü¸0¦¤…a\]ð&ãðÐÌØ¼!ÌþAò˜2ºÏ: ¦` ® þ ÚÀ Î ¹  l[ Ê€ ð >a†!O–A¨.«e±%ÕH˜Ei| K$(H X³\jÎP„¶P$¨á‘œgÏ„!ö ’þZb%æQ…%za² šÁfØSÔ‚>¨}ÈÜ̬]9Ü¡÷1—,sºáæA”½~A—§xäªx|¿¡ùÜ!ôG¬Aú ¦€ zóþ (a» Ò¸ ¸`á3Ý ž ä‡å¸}ªh¸¯§äÈšU€Á ã 4–Á5Í5“Hzø±‡xL 4@†6Í3Ê$£Œ'K àApPÁ |H¦ [Õh³ oß85Ž9èx# DÈQ”œ,‡`A¾tÔÑtÂ3Ì0õâ‰dƒ.´ÈòŠ+ä•BJþ(œ`‚Ó;õžOÈ€…,Få“9‰ãT8þysÏ€Ê K/è0hMW^9¸M„ä¨ÙÎ…BI +zðÁGs´1F‰%†1†Šc„±âalÑÂîQ`ã6Jq‹3¥]—5¸ÄqŠ$ÌQˆ&†ÄÑG)˜]&M4Ï83Ì#œP‚x AÄÆ/>BcÍ6duÓ8㤠Î4ÇP™ EŃË#[±. quÓË'^ŒL5¼´”è*¨” (ž¨WH;ŒP/P>}€i,›ª£_8û9u¦7õ˜32ÅÌÒË9Ù´ÚѯróÍ„è¬C5N[#š4¤x¸‡v°qþ¬c€!a([âZ|Dl@X „ˆ0Ì@3š5 ò±Žø±É#º\BŒ=·SZáÑ4sŠ ðA|>Å‹dS6¬›Íj†c 2Sw/“xAD·„T±H© ã (f”‘L4¾Ô‚h+«”'Ê'œh2‰!Xð0‚Ë=]po¦FéÓé8ý-´8ò”3 2ÃÈ‹9×´Úö f³Í7³žSN5[9 W4§äaÇ^t¸AF°&j½5×axaÅJˆpX`ÁüSЂN@ãЈ†4¨q½Ia£¸D!‹f c‹PiJ fÜ `A¶¤þ l€G0*¬¡ u£Ü膿ºq–t„£ž{È›Œ¡‹I€ h¸ÅH&’=}ä½EŠ _ØÂ%âA…)FqHb < AË2à“{eAf÷É@øÃLÁ ‹¨ØêødÕ_ˆâX³5]ÁŠ‘Ñ„™¨"¶àd@õò V…Wï­ûÎÄŽoXc˜Å.Ê ¾²‘h_y„ÈQŽm4­p—q†(ØÀ(œ!šð þ`¡f ±Š¥=\BÀdˆa c,CÈAX2˜ÁŒfôÈ´ {ÚÓÔ,£ëRí{êŒf²ÀÕhÆ4Ä(0nˆþiáÐj‘·NR¨(>" bÙª¾Å¼pŒep•ÕdÅ)²ŠNdb‡à‚Ÿ÷t€OXŦ’r3œ1/¿×XÆ0h±‹^­-~õ `½‡rhHÕ¨F/±'P¡š !þ€6h­ i8¸¶"1°!•ØÅC–1Àhи3xz [øÂÖÂ`$HÔÊP×1J e øÅü ®ÝB g°áÓH5XýŒÐ'.ÔP­3¼²n¸{6+‡7´!\bƒ “r‚Š=T¡ Œ˜–£#ê£ËdØÂ1š± [Ìâ¬Y)DqžKHÂ]ø ØK)â­  vî"½Auo|õÜ`Æ0l‘‹q`£Ñ|}ö¤‹CÉOºL5Љ1D hàƒ q6&0Y ŒÌÀYGÄB2Ĺ­3 2ãh\#Q²¶œñÛjàš€q9=3¦± ÜðþÔ€o¸q màrBàØÆ8ÈaܤÇ8ÆÈÅ$ÆÐ0À¢:{òÅ/‚(ZÑVg»\0†3z!vXÀĉãÅÄ$á ”à=ë}TÀ„ºã‡Þì´w~±qªàˆƒ°Ms£˜øºr´OäØð$.¥ ‚Q–z "€qŸ‡hp,e°v€¶p}A¦ ΂ ® Tq´ pÑ ªg Ek‡åj¹G@gO×+÷&GLaçÝ œódÆq  £pV`~’eXÆ'¢õÛ¥³ µ0 à%2 jV é¦~XänÐ-m¥ç _ôþ+Þp üV ¸ xvOÿÇ[!ܰOmx+ØR± d`~~ r€¨qkÀ¯ch ƒ ·ÐQÁP Ìà[$87ÒàQÁ•{5G?e@D L7ªö ÆÂEt¢â Ü0åpétÞOnòlC ‡ðR ¹0À'×G{²mÛeà JDMãq å¦;– †ðBpqÖð^NPwÈW_—ã ʶ_Â` ¸ Ù@‡„Öçdñ Ç÷ öÓà# †ˆˆ¯ƒ¦j€ˆj`‚  ½€bõQ0õR°V@8Fþ@ëÂZ9\ÌðZ—Bq„o½q&ÆvèÀKB2%Î6Cˆ •@Q@®}?$V¥uÒ! a€Ÿ± ´àU¬ 21   —`^['pEp6kÕè_”_aô Ýð†ÁP ·°¶Ò¶ÒŽ×óÚà på ƒÇ`£aµp}à°Gn0gp©ž–xPœà 'G‚8 ~™´f@ƒ˜/Åz¤áF_ñ*ÚÀ=¹D¥Kâ  ðt’Q–bº  mð_0 "… á„B´'1 bÅn´CvY˜;›)ˆÀ?P”B)°Üxg£‘`F0Ê#zÊgÂ< Ág~6 ³à¼ÙC‡Vj+¥1¥¢•É K¡Ž‡e˜~y‘¬¥ ¹P Ž`qü¸°¥ŠÌ~4vÐbÐô ©0 l ÀJ…P {‘¤’ ¯€ Âð4¶ U½ÀÁ|Ű ¨bpÀ¤ÁÄ'¢ ¡ËÏý ÐhÍÈ ª ¡`Tà ËP¡âAú(“a@)°?üÓ`BP ¤lÊì´˜CðÔ_¯`c›©D½ VÂp ø”‡^J9â‚»Z„«§g•¥€ ‹@á;…@ˆ°Œ°Z€D¿ Â0Ðzþ ž ¯hÅ{ÎPÕ/ûÛf 'aŽ¢0Ër¸`Ö©ËÁ§ ÐÏÝÏg½È2Y„g0Á°Œ-^@é(› ˆ0E€Ð?>QKƒ]µöå©wÍ Ô4“y©#Í¥ñO¤±kUª©wø ákµFJ5÷—îùjù Íà3ÂÀU±€ §0 ŠÀÁU¯ §P ¾ Ȱc¬V¹Ì°bV­ ËGâÈP ¾à –`\°ž ÉÐŒÌÜ(æÏÉa hmÖ=‹ÁWG hq=;àj»g¨æ—dÑJ©ä"TC Þø±Oñ±ÊÊ ˆb#½hxdÒTZ¥þ3wÒÅùFܳØÐËÜ Ó6vàÏc4Æ1Æj¬F Î Êcuž ËPçOö²ze'> ž'â¸P 0ÎÏϭ臎 3„þlÖVe]¾P kð“Üà®´aEÞ àä=gPB@ Ä{†Lq_÷0ᘢgä sH‡]^@2²]Îߨ2¥„g½dBØàÙþc¯6‚ Æd2d0czŽZaâv.¹¨åÎΦ[½ð ›àd€“  ãi-î~è)fî îÏ­Õq}ÀP hÀ½€ sŒ ½fˆ CÀ×>Ñ^=£@ØÊ³‡=W(jþå±Ð äÐW`«¸R¥’}ÒÒ+¶Å)£+¤ Ó‚¹ú—nc 8@ó¹c ®ÀÎÎáuÞç.V¦7Þ ³ ‹Ð„° »Å|áÞÏ7ÎèànîpBîˆ¾Ü ¿` jÐò.M´k;·[êÑÕ{E}@A ð÷a§|¼ö¶BÝÐñí äàkûºå…ÓRf)½¤Ñxµ.ýê•al× ñUÝæëB‚ÊÞ 06ŸwOç œç!î&¢‹Ð©` P|p ³ Õ1Kãlî±|Ç!„Ç)–Ö¼LÙšÕa iÀ»»¸€("#¢Ð Þ]®càô£ä"U_Êë¤Ñ|þG¯ØgÄ M梛ñÏû…S>Òk–¬gX@Ìë‰iŸ× 2åÏgªÇÑâa¬ÂX…®P —„`” òâËz¦o")¶|Ëš‹Mçtß³i]ÈS51¦ÀP`žjM~šféñé¨ÑÃã#¢øþá;'Ü·ƒß¼)ìö­[µeÁbµ"§š5jÕ4RãHmÚ4Ž?†œ&í£IjÒL–92%Ki=‚ìXí¢µjÖp¦|Æ,Y1`¿xá²Ek"+U¨R©r5k—°bË”-£ÊL2dÇ’;Öµ+VdÉÂ*S&V,X¬ÇÐ3†ÌX1co‡ ›;,˜°»þÁ‚ýFªM]É|ÙŠåŠ*S£@}âdI"1ERd¸p² #~ˆˆÏœÁp¿1ìæ›µeÂd­§MçÅ2gŠœ=2šG•#OªD SZ´˜'Aö~é¸ÊhÑž=ƒÖZ³åÍ–1“:Ýj²²aÕ† +5v²áÉ~7{ÖmÜcpá¾%6l1ºsñýµ·Ôš)¼ŽùÂU¸•ªSH å“M.‘D3ŠPAƒÊ2ÀÀ‚ Dج3s GœÑ¼ñ¦9D-˜YT GJ´f›hªí¤™LÊm¥’~KÎE;Ž·hv“šgDN¹äžqšgšq¦Hê˜QRª©À#‹É©¨þ¼ìÂJF+ïÒâê­bˆ)æ½/åsO`‚)3(Sؘ"0`j‘å¿T[Œ“K&A„Œ!&»ƒ ,ÀL<¡0pÀ!”!‡ºáæšÔhIEœmJÌ)¶jZê¨ÅÜD:.ÆeÌqk.Óã¢i.9QEõÔåœqu9$™qµªf¨SfI%§jòɲȳ’<±´ÊÊ+¶Øó²=÷ì2˜2ù¥RØÀ—c~¹E–WV‰S”O<)P’CÄÈóA?ý¼„@éì -¤NÈÆ§+üQ;”U_‹—õË=ì-Ìæ3K_ ¶»À­-ja”.žBtŠÙþ„&ƒˆ/ÀàÇ=nY5°‚'¼"ÿ ±?ä!nx3ذ.N^ã‘U­wn5÷,×Êë1&²ùŠ,<Þ¹N”Q%Ãe}h9‹fÕçÊ–½çXÇ’ò€Ç4¹—1+([>m‚aûeØîb¼È….tq‹ªÊ"°hÅ*PQ R”8r ÖM@d%«FÀ=X£$~.Í¡ ë^7x/aoì=¾Y‡oKšïÇp2«L…ÒNϯ´r±p%+YQ¥*¨2•µRÕ-kå«\,?QËõ¡³øB¿^ VÁcæ…˜}‹\Øb‹V}E+ Q„¸’øƒþb`³J@Ú@Zip†_ÔÃ…&´?Îìz-$2bÎŽ5¶CLóª,RÏcm• ŸŒoæµù°‚YRëˆpIOÊÔÃ%(KùK.01‚Q3%<áY>“³Në¬ûÂY¼€­kw‘Z_ïâ¶f&JQfA l;N¤ûD'2±5 ¡®ëðž)`ÔÀ ¬hÇ Ÿ»í÷íá8ŒY$QzJ6%¨¹£•¯˜ŒÔE µ[†¥Ù·l–ßQ ûà9¿2rï1ð˼®ð3™ÖL½`–ÃuZŠùµj×EÆo› ¸wüÁ²,Š­­ÞèäkP  ÍaiW›(ðþ€a~àüýÐÎýñx~À£ܘÅ6Æ+íË-Åâ÷¹à05±‰½x_{ÚײöeëW¦\|byùhYÖË ÊåÊ.q\çÚiW­‚{íë¶‹ÙÌTm{ÜqæZ$ÿÁ´ EQènwÐá}Ÿ€°Àl¸ «Y-°ä Ž>úqþßœüxüsÏßyœÃÕ8³œX¾¯.ð£\ìã—a08-ÀeÁ‹ø90ƒÛ‹fQ8[k@ˆ‹8Š£¸Ýã…gÉ51«8‹3³1Ó82>\6ª:>\¨as°æAû¸YXÁYP³XˆºÓ-»s3RЄC ƒ.þðÖá>{9 ø€ø2¸h˜‡}à‡Ä#4&,1%t¼Çë‡|ˆ‡mà…NØ1&P‚%`‚#8‚.\‚%H2T% Ã$0C$@2\C7<4dC7\Ã#0#øÂ:ÌÃ/¼C$ØÃ=,"Ä"0‚>¼Ã=äÃ>¬C#(FD"xÄ!€DHJ,J‚KœDL!‚  Ä  NìÄKÅQLEØ @ø à“ÊP£rÁ€ ø°$@K8uЇóã‡&,ÆçZ¿ÇKF8¿(ćr@W€„:à%‚°€xptþpÇ€pÜÆpnÜÆr$ÇtLGwlzÇrDÇr4G}G`ðGr„drluüGzÈHX…„G~LȤÇ~lHHX¸HŒThÈ@@‹¼È‘LHI•4”DP ()HL0†r˜%|Bc4Æ(ÆÄSÆös¿)$‡m†a˜7;…/Ú*QRتQQ «,S#P¨JSHŒPxÊR`J88 £¯¬JRK¨„3¬dË© #ªÜÊ8 £NøPØJO¨Ë­\ŒP¸Ë»ü» …´L¶ßú„PèË»üJ1ªK9oÙOÈKN¨0sâ„È<¦vÂK°„K¸ÌÌLLÀ„KÈLxÊR˜aX†kðvxaFöëI ;sispmctl-3.1/aclocal.m40000664000200200017500000010432511664772150013536 0ustar petepete# generated automatically by aclocal 1.11.1 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, [m4_warning([this file was generated for autoconf 2.68. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically `autoreconf'.])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.11' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.11.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.11.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to # `$srcdir', `$srcdir/..', or `$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is `.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 9 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 10 # There are a few dirty hacks below to avoid letting `AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "GCJ", or "OBJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], UPC, [depcc="$UPC" am_compiler_list=], [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. #serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each `.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 8 # AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 16 # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.62])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) AM_MISSING_PROG(AUTOCONF, autoconf) AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) AM_MISSING_PROG(AUTOHEADER, autoheader) AM_MISSING_PROG(MAKEINFO, makeinfo) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) _AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl dnl The `parallel-tests' driver may need to know about EXEEXT, so add the dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl ]) dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 6 # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 4 # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # ------------------------------ # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) # _AM_SET_OPTIONS(OPTIONS) # ---------------------------------- # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 # Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 5 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT(yes)]) # Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor `install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in `make install-strip', and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be `maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006, 2008 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # serial 2 # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of `v7', `ustar', or `pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. for _am_tool in $_am_tools do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR sispmctl-3.1/config.h.in0000664000200200017500000000577211664772151013730 0ustar petepete/* config.h.in. Generated from configure.in by autoheader. */ /* Define to 1 if you have the header file. */ #undef HAVE_FCNTL_H /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H /* Define to 1 if you have the `nsl' library (-lnsl). */ #undef HAVE_LIBNSL /* Define to 1 if you have the `rt' library (-lrt). */ #undef HAVE_LIBRT /* Define to 1 if you have the `socket' library (-lsocket). */ #undef HAVE_LIBSOCKET /* Define to 1 if your system has a GNU libc compatible `malloc' function, and to 0 otherwise. */ #undef HAVE_MALLOC /* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H /* Define to 1 if you have the `memset' function. */ #undef HAVE_MEMSET /* Define to 1 if you have the header file. */ #undef HAVE_NETINET_IN_H /* Define to 1 if you have the header file. */ #undef HAVE_NET_ETHERNET_H /* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H /* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H /* Define to 1 if you have the `strchr' function. */ #undef HAVE_STRCHR /* Define to 1 if you have the `strdup' function. */ #undef HAVE_STRDUP /* Define to 1 if you have the `strerror' function. */ #undef HAVE_STRERROR /* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H /* Define to 1 if you have the header file. */ #undef HAVE_STRING_H /* Define to 1 if you have the `strncasecmp' function. */ #undef HAVE_STRNCASECMP /* Define to 1 if you have the `strrchr' function. */ #undef HAVE_STRRCHR /* Define to 1 if you have the header file. */ #undef HAVE_SYS_ETHERNET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_SOCKET_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H /* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H /* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H /* Name of package */ #undef PACKAGE /* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT /* Define to the full name of this package. */ #undef PACKAGE_NAME /* Define to the full name and version of this package. */ #undef PACKAGE_STRING /* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME /* Define to the home page for this package. */ #undef PACKAGE_URL /* Define to the version of this package. */ #undef PACKAGE_VERSION /* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS /* Version number of package */ #undef VERSION /* Define to empty if `const' does not conform to ANSI C. */ #undef const /* Define to `int' if doesn't define. */ #undef gid_t /* Define to rpl_malloc if the replacement function should be used. */ #undef malloc /* Define to `unsigned int' if does not define. */ #undef size_t /* Define to `int' if doesn't define. */ #undef uid_t sispmctl-3.1/Makefile.in0000664000200200017500000005310111664772151013737 0ustar petepete# Makefile.in generated by automake 1.11.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, # Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ target_triplet = @target@ subdir = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(top_srcdir)/configure AUTHORS COPYING ChangeLog INSTALL NEWS \ admin/config.guess admin/config.sub admin/depcomp \ admin/install-sh admin/missing ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_HEADER = config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ html-recursive info-recursive install-data-recursive \ install-dvi-recursive install-exec-recursive \ install-html-recursive install-info-recursive \ install-pdf-recursive install-ps-recursive install-recursive \ installcheck-recursive installdirs-recursive pdf-recursive \ ps-recursive uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ distdir dist dist-all distcheck ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d "$(distdir)" \ || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr "$(distdir)"; }; } am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ BINDADDR = @BINDADDR@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ GREP = @GREP@ HAVELIBUSB = @HAVELIBUSB@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LTLIBOBJS = @LTLIBOBJS@ MAKEINFO = @MAKEINFO@ MKDIR_P = @MKDIR_P@ OBJEXT = @OBJEXT@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ WEBDIR = @WEBDIR@ WEBLESS = @WEBLESS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_CC = @ac_ct_CC@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target = @target@ target_alias = @target_alias@ target_cpu = @target_cpu@ target_os = @target_os@ target_vendor = @target_vendor@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ SUBDIRS = . src EXTRA_DIST = LICENCE admin/bootstrap extras/sispmapplet.e3p extras/sispmapplet.e3t extras/sispmapplet.py extras/sispmform.ui extras/README extras/addheader all: config.h $(MAKE) $(AM_MAKEFLAGS) all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): config.h: stamp-h1 @if test ! -f $@; then \ rm -f stamp-h1; \ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \ else :; fi stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status @rm -f stamp-h1 cd $(top_builddir) && $(SHELL) ./config.status config.h $(srcdir)/config.h.in: $(am__configure_deps) ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) rm -f stamp-h1 touch $@ distclean-hdr: -rm -f config.h stamp-h1 # This directory's subdirectories are mostly independent; you can cd # into them and run `make' without going through this Makefile. # To change the values of `make' variables: instead of editing Makefiles, # (1) if the variable is set in `config.status', edit `config.status' # (which will cause the Makefiles to be regenerated when you run `make'); # (2) otherwise, pass the desired values on the `make' command line. $(RECURSIVE_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" $(RECURSIVE_CLEAN_TARGETS): @fail= failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @$(am__cd) '$(distuninstallcheck_dir)' \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile config.h installdirs: installdirs-recursive installdirs-am: install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-hdr distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ ctags-recursive install-am install-strip tags-recursive .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \ distclean distclean-generic distclean-hdr distclean-tags \ distcleancheck distdir distuninstallcheck dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ pdf-am ps ps-am tags tags-recursive uninstall uninstall-am # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: sispmctl-3.1/configure0000775000200200017500000053764411664772152013625 0ustar petepete#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68 for sispmctl 3.1. # # Report bugs to . # # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software # Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV export CONFIG_SHELL case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org and $0: mondrian.nuessle@googlemail.com about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='sispmctl' PACKAGE_TARNAME='sispmctl' PACKAGE_VERSION='3.1' PACKAGE_STRING='sispmctl 3.1' PACKAGE_BUGREPORT='mondrian.nuessle@googlemail.com' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS EGREP GREP CPP HAVELIBUSB BINDADDR WEBDIR WEBLESSCOND_FALSE WEBLESSCOND_TRUE WEBLESS am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM target_os target_vendor target_cpu target host_os host_vendor host_cpu host build_os build_vendor build_cpu build target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_webless with_webdir with_bindaddr ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures sispmctl 3.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/sispmctl] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] --target=TARGET configure for building compilers for TARGET [HOST] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of sispmctl 3.1:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --enable-webless compile version of sispmctl without internal webserver Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-webdir=DIR use DIR to look for html files for the web-interface --with-bindaddr=IP bind listening socket to IP Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to . _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF sispmctl configure 3.1 generated by GNU Autoconf 2.68 Copyright (C) 2010 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 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:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists, giving a warning if it cannot be compiled using # the include files in INCLUDES and setting the cache variable VAR # accordingly. ac_fn_c_check_header_mongrel () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if eval \${$3+:} false; then : { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } else # Is the header compilable? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 $as_echo_n "checking $2 usability... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_header_compiler=yes else ac_header_compiler=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 $as_echo "$ac_header_compiler" >&6; } # Is the header present? { $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 $as_echo_n "checking $2 presence... " >&6; } cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include <$2> _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : ac_header_preproc=yes else ac_header_preproc=no fi rm -f conftest.err conftest.i conftest.$ac_ext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 $as_echo "$ac_header_preproc" >&6; } # So? What about this header? case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( yes:no: ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 $as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ;; no:yes:* ) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 $as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 $as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 $as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 $as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 $as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} ( $as_echo "## ---------------------------------------------- ## ## Report this to mondrian.nuessle@googlemail.com ## ## ---------------------------------------------- ##" ) | sed "s/^/$as_me: WARNING: /" >&2 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=\$ac_header_compiler" fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_mongrel # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_check_type LINENO TYPE VAR INCLUDES # ------------------------------------------- # Tests whether TYPE exists after having included INCLUDES, setting cache # variable VAR accordingly. ac_fn_c_check_type () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else eval "$3=no" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof ($2)) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { if (sizeof (($2))) return 0; ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else eval "$3=yes" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_type # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack 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:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { 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 : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* 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 $2 (); /* 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_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func # ac_fn_c_check_decl LINENO SYMBOL VAR INCLUDES # --------------------------------------------- # Tests whether SYMBOL is declared in INCLUDES, setting cache variable VAR # accordingly. ac_fn_c_check_decl () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack as_decl_name=`echo $2|sed 's/ *(.*//'` as_decl_use=`echo $2|sed -e 's/(/((/' -e 's/)/) 0&/' -e 's/,/) 0& (/g'` { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $as_decl_name is declared" >&5 $as_echo_n "checking whether $as_decl_name is declared... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 int main () { #ifndef $as_decl_name #ifdef __cplusplus (void) $as_decl_use; #else (void) $as_decl_name; #endif #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_decl cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by sispmctl $as_me 3.1, which was generated by GNU Autoconf 2.68. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_aux_dir= for ac_dir in admin "$srcdir"/admin; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in admin \"$srcdir\"/admin" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 $as_echo_n "checking target system type... " >&6; } if ${ac_cv_target+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$target_alias" = x; then ac_cv_target=$ac_cv_host else ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 $as_echo "$ac_cv_target" >&6; } case $ac_cv_target in *-*-*) ;; *) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; esac target=$ac_cv_target ac_save_IFS=$IFS; IFS='-' set x $ac_cv_target shift target_cpu=$1 target_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: target_os=$* IFS=$ac_save_IFS case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac # The aliases save the names the user supplied, while $host etc. # will get canonicalized. test -n "$target_alias" && test "$program_prefix$program_suffix$program_transform_name" = \ NONENONEs,x,x, && program_prefix=${target_alias}- am__api_version='1.11' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; esac # Do `set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi rm -f conftest.file if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using `strip' when the user # run `make install-strip'. However `strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the `STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE=sispmctl VERSION=3.1 cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' # Checks for programs. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } 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:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { 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:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from `make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named `D' -- because `-MD' means `put the output # in D'. mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with # Solaris 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with `-c' and `-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle `-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # after this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvisualcpp | msvcmsys) # This compiler won't grok `-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi # check configure options # Check whether --enable-webless was given. if test "${enable_webless+set}" = set; then : enableval=$enable_webless; WEBLESS=true fi if test x$WEBLESS = xtrue; then WEBLESSCOND_TRUE= WEBLESSCOND_FALSE='#' else WEBLESSCOND_TRUE='#' WEBLESSCOND_FALSE= fi # Check whether --with-webdir was given. if test "${with_webdir+set}" = set; then : withval=$with_webdir; WEBDIR="$withval" fi # Check whether --with-bindaddr was given. if test "${with_bindaddr+set}" = set; then : withval=$with_bindaddr; BINDADDR="$withval" fi # Checks for libraries. # Extract the first word of "libusb-config", so it can be a program name with args. set dummy libusb-config; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_path_HAVELIBUSB+:} false; then : $as_echo_n "(cached) " >&6 else case $HAVELIBUSB in [\\/]* | ?:[\\/]*) ac_cv_path_HAVELIBUSB="$HAVELIBUSB" # Let the user override the test with a path. ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_path_HAVELIBUSB="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS test -z "$ac_cv_path_HAVELIBUSB" && ac_cv_path_HAVELIBUSB="$PATH" ;; esac fi HAVELIBUSB=$ac_cv_path_HAVELIBUSB if test -n "$HAVELIBUSB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $HAVELIBUSB" >&5 $as_echo "$HAVELIBUSB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -e "$HAVELIBUSB"; then LIBUSB_LIBS=`$HAVELIBUSB --libs` CFLAGS="$CFLAGS $LIBUSB_CFLAGS" LIBS="$LIBS $LIBUSB_LIBS" else as_fn_error $? "*** libusb-config not found. You need a working libusb installation. Version >=0.1.7" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libusb version is >= 0.1.9" >&5 $as_echo_n "checking if libusb version is >= 0.1.9... " >&6; } libusb_version_needed="1009" libusb_version=`$HAVELIBUSB --version | sed -e "s/libusb //" | awk 'BEGIN { FS = "."; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'` if test $libusb_version -lt $libusb_version_needed; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } as_fn_error $? "*** libusb is too old ($libusb_version). You need a libusb installation newer or equal to 0.1.9." "$LINENO" 5 else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi # Checks for header files. ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in fcntl.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h net/ethernet.h sys/ethernet.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Checks for typedefs, structures, and compiler characteristics. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if ${ac_cv_c_const+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_c_const=yes else ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then $as_echo "#define const /**/" >>confdefs.h fi ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" if test "x$ac_cv_type_size_t" = xyes; then : else cat >>confdefs.h <<_ACEOF #define size_t unsigned int _ACEOF fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 $as_echo_n "checking for uid_t in sys/types.h... " >&6; } if ${ac_cv_type_uid_t+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "uid_t" >/dev/null 2>&1; then : ac_cv_type_uid_t=yes else ac_cv_type_uid_t=no fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 $as_echo "$ac_cv_type_uid_t" >&6; } if test $ac_cv_type_uid_t = no; then $as_echo "#define uid_t int" >>confdefs.h $as_echo "#define gid_t int" >>confdefs.h fi # Checks for library functions. for ac_header in stdlib.h do : ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" if test "x$ac_cv_header_stdlib_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_STDLIB_H 1 _ACEOF fi done { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU libc compatible malloc" >&5 $as_echo_n "checking for GNU libc compatible malloc... " >&6; } if ${ac_cv_func_malloc_0_nonnull+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : ac_cv_func_malloc_0_nonnull=no else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #if defined STDC_HEADERS || defined HAVE_STDLIB_H # include #else char *malloc (); #endif int main () { return ! malloc (0); ; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : ac_cv_func_malloc_0_nonnull=yes else ac_cv_func_malloc_0_nonnull=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_malloc_0_nonnull" >&5 $as_echo "$ac_cv_func_malloc_0_nonnull" >&6; } if test $ac_cv_func_malloc_0_nonnull = yes; then : $as_echo "#define HAVE_MALLOC 1" >>confdefs.h else $as_echo "#define HAVE_MALLOC 0" >>confdefs.h case " $LIBOBJS " in *" malloc.$ac_objext "* ) ;; *) LIBOBJS="$LIBOBJS malloc.$ac_objext" ;; esac $as_echo "#define malloc rpl_malloc" >>confdefs.h fi for ac_func in memset strchr strdup strerror strncasecmp strrchr do : as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" if eval test \"x\$"$as_ac_var"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 _ACEOF fi done ac_fn_c_check_decl "$LINENO" "MSG_NOSIGNAL" "ac_cv_have_decl_MSG_NOSIGNAL" "$ac_includes_default" if test "x$ac_cv_have_decl_MSG_NOSIGNAL" = xyes; then : fi ac_fn_c_check_func "$LINENO" "nanosleep" "ac_cv_func_nanosleep" if test "x$ac_cv_func_nanosleep" = xyes; then : true else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for nanosleep in -lrt" >&5 $as_echo_n "checking for nanosleep in -lrt... " >&6; } if ${ac_cv_lib_rt_nanosleep+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lrt $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* 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 nanosleep (); int main () { return nanosleep (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_rt_nanosleep=yes else ac_cv_lib_rt_nanosleep=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_rt_nanosleep" >&5 $as_echo "$ac_cv_lib_rt_nanosleep" >&6; } if test "x$ac_cv_lib_rt_nanosleep" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBRT 1 _ACEOF LIBS="-lrt $LIBS" fi fi ac_fn_c_check_func "$LINENO" "inet_pton" "ac_cv_func_inet_pton" if test "x$ac_cv_func_inet_pton" = xyes; then : true else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for inet_pton in -lnsl" >&5 $as_echo_n "checking for inet_pton in -lnsl... " >&6; } if ${ac_cv_lib_nsl_inet_pton+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lnsl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* 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 inet_pton (); int main () { return inet_pton (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_nsl_inet_pton=yes else ac_cv_lib_nsl_inet_pton=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_nsl_inet_pton" >&5 $as_echo "$ac_cv_lib_nsl_inet_pton" >&6; } if test "x$ac_cv_lib_nsl_inet_pton" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBNSL 1 _ACEOF LIBS="-lnsl $LIBS" fi fi ac_fn_c_check_func "$LINENO" "socket" "ac_cv_func_socket" if test "x$ac_cv_func_socket" = xyes; then : true else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for socket in -lsocket" >&5 $as_echo_n "checking for socket in -lsocket... " >&6; } if ${ac_cv_lib_socket_socket+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsocket $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* 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 socket (); int main () { return socket (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_socket_socket=yes else ac_cv_lib_socket_socket=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_socket_socket" >&5 $as_echo "$ac_cv_lib_socket_socket" >&6; } if test "x$ac_cv_lib_socket_socket" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_LIBSOCKET 1 _ACEOF LIBS="-lsocket $LIBS" fi fi ac_config_files="$ac_config_files Makefile src/Makefile" ac_config_headers="$ac_config_headers config.h" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' DEFS=-DHAVE_CONFIG_H ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${WEBLESSCOND_TRUE}" && test -z "${WEBLESSCOND_FALSE}"; then as_fn_error $? "conditional \"WEBLESSCOND\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in #( -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by sispmctl $as_me 3.1, which was generated by GNU Autoconf 2.68. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac case $ac_config_headers in *" "*) set x $ac_config_headers; shift; ac_config_headers=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_headers="$ac_config_headers" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE --header=FILE[:TEMPLATE] instantiate the configuration header FILE Configuration files: $config_files Configuration headers: $config_headers Configuration commands: $config_commands Report bugs to ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ sispmctl config.status 3.1 configured by $0, generated by GNU Autoconf 2.68, with options \\"\$ac_cs_config\\" Copyright (C) 2010 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --header | --heade | --head | --hea ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; esac as_fn_append CONFIG_HEADERS " '$ac_optarg'" ac_need_defaults=false;; --he | --h) # Conflict between --help and --header as_fn_error $? "ambiguous option: \`$1' Try \`$0 --help' for more information.";; --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" # Set up the scripts for CONFIG_HEADERS section. # No need to generate them if there are no CONFIG_HEADERS. # This happens for instance with `./config.status Makefile'. if test -n "$CONFIG_HEADERS"; then cat >"$ac_tmp/defines.awk" <<\_ACAWK || BEGIN { _ACEOF # Transform confdefs.h into an awk script `defines.awk', embedded as # here-document in config.status, that substitutes the proper values into # config.h.in to produce config.h. # Create a delimiter string that does not exist in confdefs.h, to ease # handling of long lines. ac_delim='%!_!# ' for ac_last_try in false false :; do ac_tt=`sed -n "/$ac_delim/p" confdefs.h` if test -z "$ac_tt"; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done # For the awk script, D is an array of macro values keyed by name, # likewise P contains macro parameters if any. Preserve backslash # newline sequences. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* sed -n ' s/.\{148\}/&'"$ac_delim"'/g t rset :rset s/^[ ]*#[ ]*define[ ][ ]*/ / t def d :def s/\\$// t bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3"/p s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p d :bsnl s/["\\]/\\&/g s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ D["\1"]=" \3\\\\\\n"\\/p t cont s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p t cont d :cont n s/.\{148\}/&'"$ac_delim"'/g t clear :clear s/\\$// t bsnlc s/["\\]/\\&/g; s/^/"/; s/$/"/p d :bsnlc s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p b cont ' >$CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 for (key in D) D_is_set[key] = 1 FS = "" } /^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { line = \$ 0 split(line, arg, " ") if (arg[1] == "#") { defundef = arg[2] mac1 = arg[3] } else { defundef = substr(arg[1], 2) mac1 = arg[2] } split(mac1, mac2, "(") #) macro = mac2[1] prefix = substr(line, 1, index(line, defundef) - 1) if (D_is_set[macro]) { # Preserve the white space surrounding the "#". print prefix "define", macro P[macro] D[macro] next } else { # Replace #undef with comments. This is necessary, for example, # in the case of _POSIX_SOURCE, which is predefined and required # on some systems where configure will not decide to define it. if (defundef == "undef") { print "/*", prefix defundef, macro, "*/" next } } } { print } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 fi # test -n "$CONFIG_HEADERS" eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :H) # # CONFIG_HEADER # if test x"$ac_file" != x-; then { $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" } >"$ac_tmp/config.h" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 $as_echo "$as_me: $ac_file is unchanged" >&6;} else rm -f "$ac_file" mv "$ac_tmp/config.h" "$ac_file" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 fi else $as_echo "/* $configure_input */" \ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ || as_fn_error $? "could not create -" "$LINENO" 5 fi # Compute "$ac_file"'s index in $config_headers. _am_arg="$ac_file" _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || $as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$_am_arg" : 'X\(//\)[^/]' \| \ X"$_am_arg" : 'X\(//\)$' \| \ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$_am_arg" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'`/stamp-h$_am_stamp_count ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Autoconf 2.62 quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named `Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running `make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi echo "" echo "Good - your configure finished. Start make now" echo "" sispmctl-3.1/AUTHORS0000664000200200017500000000024411664771076012747 0ustar petepeteMondrian Nuessle, mondrian.nuessle@googlemail.com Andreas Neuper, ANeuper-at-web-dot-de Olivier Matheret, matheret@free.fr Pete Hildebrandt, send2ph@googlemail.com sispmctl-3.1/COPYING0000664000200200017500000004311011664771076012731 0ustar petepete GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. sispmctl-3.1/ChangeLog0000664000200200017500000000264611664771076013461 0ustar petepete28 Nov 2011 - 3.1 cleanup web-themes webserver daemonizes when send into listen mode (FREETZ patch) fixes for the two mSIS-PM-versions (thanks to ksjh and exelnet) several bugfixes and cleanups 30 Mar 2011 - 3.0 Olivier Matheret added timer functionality Heike Zimmerer added gemplug Sven Anders added -D option to select device by serial number several bugfixes and cleanups 28 Mar 2008 - 2.7 -m switch for power status added, some other small additions, experimental support for ids 03 Mar 2008 - 2.6 msis-pm (single socket) and sis-pm with new device id of 0xfd13 supported. Bugfixes. 03 Dez 2007 - 2.5 some (small) bug-fixes 17 Aug 2006 - 2.4 added GUI written in Python (see extras directory) included bug fixes from Marius Konitzer. 17 Mar 2006 - 2.3 added support for mSIS-PM devices 03 Mar 2006 - 2.2 cleaned-up a lot more, added important configure time options 09 Feb 2006 - 2.1 clean-up added some doc, cleaned-up autotool files 05 Feb 2006 - 1.2 integrated web interface including three "skins" 13 Feb 2005 - 1.1a supporting multiple usb devices fixing naming conventions options on output format added man page prepared for i(18)n 24 Feb 2005 - 1.1 bugfixes Fixed small error in configure script, relaxed dependency for libusb to include version >=0.1.5, added new command line arguments -q and -v added Troubleshooting section 03 Aug 2004 - 1.0b initial revision, switching of outlets works sispmctl-3.1/INSTALL0000664000200200017500000002203011664771076012725 0ustar petepeteCopyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== These are generic installation instructions. The `configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a `Makefile' in each directory of the package. It may also create one or more `.h' files containing system-dependent definitions. Finally, it creates a shell script `config.status' that you can run in the future to recreate the current configuration, and a file `config.log' containing compiler output (useful mainly for debugging `configure'). It can also use an optional file (typically called `config.cache' and enabled with `--cache-file=config.cache' or simply `-C') that saves the results of its tests to speed up reconfiguring. (Caching is disabled by default to prevent problems with accidental use of stale cache files.) If you need to do unusual things to compile the package, please try to figure out how `configure' could check whether to do them, and mail diffs or instructions to the address given in the `README' so they can be considered for the next release. If you are using the cache, and at some point `config.cache' contains results you don't want to keep, you may remove or edit it. The file `configure.ac' (or `configure.in') is used to create `configure' by a program called `autoconf'. You only need `configure.ac' if you want to change it or regenerate `configure' using a newer version of `autoconf'. The simplest way to compile this package is: 1. `cd' to the directory containing the package's source code and type `./configure' to configure the package for your system. If you're using `csh' on an old version of System V, you might need to type `sh ./configure' instead to prevent `csh' from trying to execute `configure' itself. Running `configure' takes awhile. While running, it prints some messages telling which features it is checking for. 2. Type `make' to compile the package. 3. Optionally, type `make check' to run any self-tests that come with the package. 4. Type `make install' to install the programs and any data files and documentation. 5. You can remove the program binaries and object files from the source code directory by typing `make clean'. To also remove the files that `configure' created (so you can compile the package for a different kind of computer), type `make distclean'. There is also a `make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the `configure' script does not know about. Run `./configure --help' for details on some of the pertinent environment variables. You can give `configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c89 CFLAGS=-O2 LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. `cd' to the directory where you want the object files and executables to go and run the `configure' script. `configure' automatically checks for the source code in the directory that `configure' is in and in `..'. If you have to use a `make' that does not support the `VPATH' variable, you have to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use `make distclean' before reconfiguring for another architecture. Installation Names ================== By default, `make install' will install the package's files in `/usr/local/bin', `/usr/local/man', etc. You can specify an installation prefix other than `/usr/local' by giving `configure' the option `--prefix=PATH'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you give `configure' the option `--exec-prefix=PATH', the package will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. In addition, if you use an unusual directory layout you can give options like `--bindir=PATH' to specify different values for particular kinds of files. Run `configure --help' for a list of the directories you can set and what kinds of files go in them. If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving `configure' the option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. Optional Features ================= Some packages pay attention to `--enable-FEATURE' options to `configure', where FEATURE indicates an optional part of the package. They may also pay attention to `--with-PACKAGE' options, where PACKAGE is something like `gnu-as' or `x' (for the X Window System). The `README' should mention any `--enable-' and `--with-' options that the package recognizes. For packages that use the X Window System, `configure' can usually find the X include and library files automatically, but if it doesn't, you can use the `configure' options `--x-includes=DIR' and `--x-libraries=DIR' to specify their locations. Specifying the System Type ========================== There may be some features `configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, `configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the `--build=TYPE' option. TYPE can either be a short name for the system type, such as `sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file `config.sub' for the possible values of each field. If `config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the `--target=TYPE' option to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with `--host=TYPE'. Sharing Defaults ================ If you want to set default values for `configure' scripts to share, you can create a site shell script called `config.site' that gives default values for variables like `CC', `cache_file', and `prefix'. `configure' looks for `PREFIX/share/config.site' if it exists, then `PREFIX/etc/config.site' if it exists. Or, you can set the `CONFIG_SITE' environment variable to the location of the site script. A warning: not all `configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to `configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the `configure' command line, using `VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc will cause the specified gcc to be used as the C compiler (unless it is overridden in the site shell script). `configure' Invocation ====================== `configure' recognizes the following options to control how it operates. `--help' `-h' Print a summary of the options to `configure', and exit. `--version' `-V' Print the version of Autoconf used to generate the `configure' script, and exit. `--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally `config.cache'. FILE defaults to `/dev/null' to disable caching. `--config-cache' `-C' Alias for `--cache-file=config.cache'. `--quiet' `--silent' `-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to `/dev/null' (any error messages will still be shown). `--srcdir=DIR' Look for the package's source code in directory DIR. Usually `configure' can determine that directory automatically. `configure' also accepts some other, not widely useful, options. Run `configure --help' for more details. sispmctl-3.1/LICENCE0000664000200200017500000004313111664771076012666 0ustar petepete GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. sispmctl-3.1/Makefile.am0000664000200200017500000000025711664771076013737 0ustar petepeteSUBDIRS = . src EXTRA_DIST = LICENCE admin/bootstrap extras/sispmapplet.e3p extras/sispmapplet.e3t extras/sispmapplet.py extras/sispmform.ui extras/README extras/addheader sispmctl-3.1/NEWS0000664000200200017500000000000011664771076012364 0ustar petepetesispmctl-3.1/README0000664000200200017500000000730711664771076012566 0ustar petepeteSiS-PM Control for Linux 3.1 ---------------------------- (c) 2005-2011 by Mondrian Nuessle et al. Overview -------- This projects adds support for the GEMBIRD SIS-PM device to linux. Follow the instructions in INSTALL to install the application (generic configure && make && make install). Call sispmctl (formerly: sispm_ctl) without commandline parameters, it will print the available options to stdout. Since version 2.3 also 1-outlet mSIS-PM devices are supported; this is still alpha, probably not working and needs testers/developers. Since version 2.4 a GUI is available in the extra sub-directory. See the README there. Version 3.0 added the possibility to program the internal timer, thanks to Olivier Matheret. Installation ------------ See the file INSTALLATION for generic installation instructions. The following confiure options may be of interest: --prefix=dif Set installation directory-prefix (default is /usr/local) --enable-webless Disable the builtin webserver. It will not be compiled into the binary. The commandline options for the web-interface will not be available. --with-webdir=directory Install the web-interface file to subdirectories of the given directory. A doc linl in this directory will point to skin1. And the path will be default path compiled into the binary. The default without this option is /usr/local/httpd/sispmctl. --with-bindaddr=ipaddress Give the IP address (in dotted decimal form, i.e. 127.0.0.1) for the default interface that the webserver accepts connections on. The default without this option is to use all available interfaces. --with-default-port=portnumber Give the default port number the webserver is listening on. If you do not specify this option the default is 2638 Dependencies ------------ - libusb 0.1.9+ must be installed, libusb-config in $PATH Web-Interface ------------ The web interface may be started manually (i.e. sispmctl -l) or using the inittab. Add the following line to your /etc/inittab: pm:2345:respawn:/usr/local/bin/sispmctl -l There are three kind of skins between you might select: src/web1/ classic sispm_http style src/web2/ a vertical sized frame The skins are installed under $(PREFIX)/httpd/sispmctl/skin1..2 The default skin is selected by the symbolic link $(PREFIX)/httpd/sispmctl/doc which point to skin1 after installation. You can easily select a different skin by chaning this symbolic link. It is quite easy to change one or write a new one. Try it. The webinterface does not recognize if a mSIS-PM is connected, so always 4 outlets will be displayed. Usage ----- See the output of sispmctl when run without parameters and the man page. Permissions ----------- Per default, only root is allowed to use devices directly, therefor the SiS-PM also only works as root. If you use a Linux distribution that is using the ressource manager package (resmgrd), you can add a line to /etc/resmgr.conf. The following line is an example for SuSE 10.0. It MAY be different on your system. add usb:vendor=0x04b4,product=0xfd11 usb This adds the SiS-PM device to the USB class which can be used by logged in users on SuSE 10.0. If you are using a mSiS-PM device you need to use the product ID of 0xFD10 or 0xFD12 (dependant on hardware revision, see output of /sbin/lsusb -v). Solaris Support --------------- Solaris 10 and later come with sufficient libusb support; the ugen (generic USB) driver needs to be associated with the SIS-PM devices by issueing the following command before plugging in the device: for SIS-PM: update_drv -a -i '"usb4b4,fd11"' ugen for mSIS-PM: update_drv -a -i '"usb4b4,fd10"' ugen update_drv -a -i '"usb4b4,fd12"' ugen sispmctl-3.1/configure.in0000664000200200017500000000455111664771076014215 0ustar petepete# -*- Autoconf -*- # Process this file with autoconf to produce a configure script. AC_PREREQ(2.59) AC_INIT(sispmctl, 3.1, mondrian.nuessle@googlemail.com) AC_CONFIG_AUX_DIR(admin) AC_CANONICAL_TARGET AM_INIT_AUTOMAKE(sispmctl,3.1) # Checks for programs. AC_PROG_CC # check configure options AC_ARG_ENABLE(webless, [ --enable-webless compile version of sispmctl without internal webserver], [WEBLESS=true]) AC_SUBST(WEBLESS) AM_CONDITIONAL(WEBLESSCOND, test x$WEBLESS = xtrue) AC_ARG_WITH(webdir,[ --with-webdir=DIR use DIR to look for html files for the web-interface], [WEBDIR="$withval"]) AC_SUBST(WEBDIR) AC_ARG_WITH(bindaddr,[ --with-bindaddr=IP bind listening socket to IP], [BINDADDR="$withval"]) AC_SUBST(BINDADDR) # Checks for libraries. dnl check for libusb-config AC_PATH_PROG(HAVELIBUSB, libusb-config, $PATH) if test -e "$HAVELIBUSB"; then dnl LIBUSB_CFLAGS=`$HAVELIBUSB --cflags` LIBUSB_LIBS=`$HAVELIBUSB --libs` CFLAGS="$CFLAGS $LIBUSB_CFLAGS" LIBS="$LIBS $LIBUSB_LIBS" else AC_MSG_ERROR([*** libusb-config not found. You need a working libusb installation. Version >=0.1.7]) fi dnl check for version of libusb AC_MSG_CHECKING([if libusb version is >= 0.1.9]) libusb_version_needed="1009" libusb_version=`$HAVELIBUSB --version | sed -e "s/libusb //" | awk 'BEGIN { FS = "."; } { printf "%d", ($''1 * 1000 + $''2) * 1000 + $''3;}'` if test $libusb_version -lt $libusb_version_needed; then AC_MSG_RESULT(no) AC_MSG_ERROR([*** libusb is too old ($libusb_version). You need a libusb installation newer or equal to 0.1.9.]) else AC_MSG_RESULT(yes) fi # Checks for header files. AC_HEADER_STDC AC_CHECK_HEADERS([fcntl.h netinet/in.h stdlib.h string.h sys/socket.h unistd.h net/ethernet.h sys/ethernet.h]) # Checks for typedefs, structures, and compiler characteristics. AC_C_CONST AC_TYPE_SIZE_T AC_TYPE_UID_T # Checks for library functions. AC_FUNC_MALLOC AC_CHECK_FUNCS([memset strchr strdup strerror strncasecmp strrchr]) AC_CHECK_DECL(MSG_NOSIGNAL) AC_CHECK_FUNC(nanosleep, [true], [AC_CHECK_LIB(rt, nanosleep)]) AC_CHECK_FUNC(inet_pton, [true], [AC_CHECK_LIB(nsl, inet_pton)]) AC_CHECK_FUNC(socket, [true], [AC_CHECK_LIB(socket, socket)]) AC_CONFIG_FILES([Makefile src/Makefile]) AM_CONFIG_HEADER(config.h) AC_OUTPUT echo "" echo "Good - your configure finished. Start make now" echo "" sispmctl-3.1/extras/gemplug/0000775000200200017500000000000011664771076014645 5ustar petepetesispmctl-3.1/src/web1/0000775000200200017500000000000011664771076013324 5ustar petepetesispmctl-3.1/src/web2/0000775000200200017500000000000011664771076013325 5ustar petepetesispmctl-3.1/admin/0000775000200200017500000000000011664772151012762 5ustar petepetesispmctl-3.1/extras/0000775000200200017500000000000011664771076013205 5ustar petepetesispmctl-3.1/src/0000775000200200017500000000000011664772151012461 5ustar petepetesispmctl-3.1/0000755000200200017500000000000011664772152011671 5ustar petepete