|
|
@ -1,83 +0,0 @@ |
|
|
|
# --- SDE-COPYRIGHT-NOTE-BEGIN --- |
|
|
|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. |
|
|
|
# |
|
|
|
# Filename: lib/libsde-ini.in |
|
|
|
# Copyright (C) 2006 The OpenSDE Project |
|
|
|
# |
|
|
|
# More information can be found in the files COPYING and README. |
|
|
|
# |
|
|
|
# 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; version 2 of the License. A copy of the |
|
|
|
# GNU General Public License can be found in the file COPYING. |
|
|
|
# --- SDE-COPYRIGHT-NOTE-END --- |
|
|
|
|
|
|
|
# this file has to be sourced only by tools which really want to |
|
|
|
# write ini formated files. reading methods are available at libsde.in |
|
|
|
|
|
|
|
# writes a list of variables into a section of an ini file |
|
|
|
# USAGE: ini_write "file" "section" var1 var2 var3 ... |
|
|
|
# |
|
|
|
ini_write() { |
|
|
|
local file="$1" section="$2" var= c= |
|
|
|
local tmpfile= |
|
|
|
shift 2 |
|
|
|
|
|
|
|
# something to write? |
|
|
|
[ $# -gt 0 ] || return |
|
|
|
|
|
|
|
# make sure the file exists |
|
|
|
[ -f "$file" ] || touch "$file" |
|
|
|
tmpfile="$file.$$" |
|
|
|
|
|
|
|
# FIXME: a lock may be needed |
|
|
|
if grep -q "^\[$section\][ \t]*$" "$file"; then |
|
|
|
# known section |
|
|
|
# |
|
|
|
|
|
|
|
#FIXME: better performance may be required |
|
|
|
|
|
|
|
# split the file |
|
|
|
rm -rf $tmpfile.{0,1,2} |
|
|
|
gawk "BEGIN { level=0; } |
|
|
|
/^\[/ { |
|
|
|
if ( level == 0 && \$0 ~ /^\[$section\][ \t]*\$/ ) |
|
|
|
level=1; |
|
|
|
else if ( level == 1 ) |
|
|
|
level=2; |
|
|
|
} |
|
|
|
{ print > \"$tmpfile.\" level } |
|
|
|
" "$file" |
|
|
|
|
|
|
|
# remove empty lines |
|
|
|
sed -i -e '/^[ \t]*$/d;' $tmpfile.1 |
|
|
|
|
|
|
|
# edit the section |
|
|
|
for var; do |
|
|
|
if grep -q "^$var=" $tmpfile.1; then |
|
|
|
sed -i -e "s|^$var=.*|$var=$( eval echo \$$var )|" $tmpfile.1 |
|
|
|
else |
|
|
|
echo "$var=$( eval echo \$$var )" >> $tmpfile.1 |
|
|
|
fi |
|
|
|
done |
|
|
|
|
|
|
|
# and finally write the new file! |
|
|
|
( |
|
|
|
cat $tmpfile.0 |
|
|
|
cat $tmpfile.1 |
|
|
|
if [ -s $tmpfile.2 ]; then |
|
|
|
echo |
|
|
|
cat $tmpfile.2 |
|
|
|
fi |
|
|
|
) > "$file" |
|
|
|
|
|
|
|
rm -rf $tmpfile.{0,1,2} |
|
|
|
else |
|
|
|
# new section |
|
|
|
# |
|
|
|
echo -e "\n[$section]" >> "$file" |
|
|
|
for var; do |
|
|
|
echo "$var=$( eval echo \$$var )" |
|
|
|
done >> "$file" |
|
|
|
fi |
|
|
|
} |