blob: d95aa554607975b73caa94abd308d1b63ce15049 [file] [log] [blame]
#!/bin/bash
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
# -*- mode:sh -*-
#
# Usage:
# gpdircheck [-E] path ...
# -E check if directory is empty
#
# Tests that the arguments:
# - exist in the filesystem
# - are directories
# - current user has read/write permission
#
# When -E is specified we will check that the next directory does NOT exist
#
# Standard System error messages can be examined with:
# perl -le 'print $!+0, "\t", $!++ for 0..127'
#
# Scan through directories and perfom the checks on each in turn.
OPTION=0;
for i in "$@"
do
# Handle options
if [ "${i:0:1}" == "-" ]; then
# for any option we expect a directory to follow, so if we already
# have an option set but not yet cleared it is an error.
if [ $OPTION -ne 0 ]; then
echo "Usage: gpdircheck [-E] ..." 1>&2; exit 1;
fi;
if [ "$i" == "-E" ]; then
OPTION=1;
else
echo "Usage: gpdircheck [-E] ..." 1>&2; exit 1;
fi;
# -E will allow non-existent directories, it is assumed that the
# parent directory is allow being checked without the -E option.
elif [ $OPTION -eq 1 ]; then
if [ ! -e "$i" ]; then OPTION=0; # Good result
else echo "$i : File exists" 1>&2; exit 17;
fi
elif [ ! -e "$i" ]; then echo "$i : No such file or directory" 1>&2; exit 2;
elif [ ! -d "$i" ]; then echo "$i : Not a directory" 1>&2; exit 20;
elif [ ! -r "$i" ]; then echo "$i : No read permissions" 1>&2; exit 13;
elif [ ! -w "$i" ]; then echo "$i : No write permissions" 1>&2; exit 13;
# We no longer check for empty directories, instead we error when -E
# points to a directory that already exists.
# elif [ $OPTION -eq 1 ]; then
# if [ `ls "$i" | wc -l` -ne 0 ]; then
# echo "$i : Directory not empty" 1>&2; exit 66;
# fi;
OPTION=0;
fi;
done;
# If we had a -E without a following directory then error.
if [ $OPTION -ne 0 ]; then
echo "Usage: gpdircheck [-E] ..." 1>&2;
exit 1;
fi;
exit 0;