dont keep backups by default
[cedit] / cedit
diff --git a/cedit b/cedit
index 68efcae69398a0cb73e60134eaa9972c2579db0d..9d37b55e56bc1053527489f86c8c4673420361ca 100755 (executable)
--- a/cedit
+++ b/cedit
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-cedit() { # [-v] [section_name] FILE
+cedit() {
+    local help="Usage: [-h|--help ] [-v] [SECTION_NAME] FILE
+Create/modify a section in a config file
 
+Returns 1 if the file is modified by this command, 2 or higher
+for other problems.
+
+The section is #comment delimited. Reads STDIN for the contents of the
+section. Without SECTION_NAME, it acts on a global unnamed
+section. cedit is short for config edit.
+
+-v         Verbose
+-b         Keep backup file
+-h|--help  Help"
     local s diff name init
     local file_dir="$(dirname "$file")"
     local exists=true
     local verbose=false
+    local backup=false
+
+    case $1 in
+        -b) backup=true; shift ;;
+        -v) verbose=true; shift ;;
+        -h|--help) echo "$help"; return ;;
+    esac
 
-    if [[ $1 == -v ]]; then
-        verbose=true
-        shift
-    fi
     if (( $# == 2 )); then
         name=": $1"
         shift
@@ -38,14 +53,14 @@ cedit() { # [-v] [section_name] FILE
     if [[ ! -e $file_dir ]]; then
         if ! mkdir -p $file_dir; then
             s=sudo
-            $s mkdir -p $file_dir || return 1
+            $s mkdir -p $file_dir || return 2
         fi
     fi
     if [[ ! -e $file ]]; then
         exists=false
         if ! $s touch $file; then
             s=sudo
-            $s touch $file || return 1
+            $s touch $file || return 2
         fi
     fi
 
@@ -79,7 +94,7 @@ cedit() { # [-v] [section_name] FILE
     fi
 
     if ! $exists; then
-        ret=0
+        ret=1
         if $verbose; then
             echo "New file $file:"
             cat "$file"
@@ -92,18 +107,21 @@ cedit() { # [-v] [section_name] FILE
                 echo "No changes made to $file"
             fi
         else
-
             echo "backup of original at $temp"
             echo diff -u "$temp" "$file":
             echo "$diff"
         fi
     else
+        # for systems like openwrt which don't have diff
         diff=$(cmp "$temp" "$file")
         ret=$?
         if $verbose; then
             echo "$diff"
         fi
     fi
+    if ! $backup; then
+        rm -r $"$temp"
+    fi
     return $ret
 }
 cedit "$@"