+ mkdir "$CHARDIR"
+fi
+
+LOCALCHARDIR=$HOME/.local/share/charsel/charfiles
+[[ -d $LOCALCHARDIR ]] || mkdir -p "$LOCALCHARDIR"
+
+localdirfiles="$LOCALCHARDIR"/*
+[[ -n "${#localdirfiles[*]}" ]] && cp -rf "$LOCALCHARDIR"/../* "$CHARDIR"
+
+globaldirfiles=($/usr/share/charfiles/)
+[[ -n "${#globaldirfiles[*]}" ]] && cp -rf /usr/share/charsel/* "$CHARDIR"
+
+# Check if charfile exists
+CHARFILE="$CHARDIR/charfiles/$2"
+function existence() {
+ if [[ ! -f $CHARFILE ]]; then
+ missing_charfile
+ fi
+}
+
+# VERY basic syntax check
+function validity() {
+ if [[ $(grep , "$CHARFILE" && grep - "$CHARFILE") ]]; then
+ echo "valid charfile"
+ else
+ existence
+ echo "invalid charfile"
+ exit 2
+ fi
+}
+
+# Look for arguments
+while getopts ":abcdhlLnvV" arg
+do
+ case ${arg} in
+ a)
+ SHOWALL="true"
+ ;;
+ b)
+ COLOR="bw"
+ ;;
+ c)
+ validity
+ exit 0
+ ;;
+ d)
+ readme
+ exit 0
+ ;;
+ h)
+ usage
+ exit 0
+ ;;
+ l)
+ echo "The following charfiles are installed:"
+ list
+ exit 0
+ ;;
+ L)
+ list
+ exit 0
+ ;;
+ n)
+ COPY="no"
+ ;;
+ ?)
+ echo "Invalid option"
+ usage
+ exit 3
+ ;;
+ esac
+done
+shift $((OPTIND-1))
+
+if [ $# -eq 0 ]; then
+ echo "Please enter a valid charfile, or use charsel -h for help."
+ charsel -l
+ exit 3
+fi
+
+# Redefine charfile and check file validity
+CHARFILE="$CHARDIR/charfiles/$1"
+existence
+validity
+
+# Dependency check
+if [[ $COPY == "no" ]]; then
+ if [[ ! -x /usr/bin/xclip ]]; then
+ echo "Please install xclip."
+ exit 4
+ fi
+fi
+
+# Define length of shortcode
+LENGTH=$(cut "$CHARFILE" -f 1 -d ',' -s \
+ | wc -L \
+ | cut -b 1)