1 changed files with 84 additions and 0 deletions
			
			
		@ -0,0 +1,84 @@ | 
				
			|||
#!/bin/sh | 
				
			|||
 | 
				
			|||
################################################################# | 
				
			|||
# Script to convert ASCII art to a C string.                    # | 
				
			|||
#                                                               # | 
				
			|||
# Author:           Maximilian Stiefel                          # | 
				
			|||
# Last modified:    13. December 2017                           # | 
				
			|||
# CLI usage:        ./convert_ascii_2_string.sh file string     # | 
				
			|||
# Required PKGs:                                                # | 
				
			|||
#                                                               # | 
				
			|||
################################################################# | 
				
			|||
 | 
				
			|||
################################################################# | 
				
			|||
# Vars                                                          # | 
				
			|||
################################################################# | 
				
			|||
OUTPUT="$1_converted" | 
				
			|||
NU_PARAMS=2 | 
				
			|||
STR=$2 | 
				
			|||
CHARS=0 | 
				
			|||
LINES=0 | 
				
			|||
 | 
				
			|||
################################################################# | 
				
			|||
# Action                                                        # | 
				
			|||
################################################################# | 
				
			|||
 | 
				
			|||
# Check if the expected number of parameters is given.   | 
				
			|||
if [ $# != $NU_PARAMS ] | 
				
			|||
  then | 
				
			|||
  echo "Error: Illegal number of parameters." | 
				
			|||
  echo "Correct usage is:" | 
				
			|||
  echo "./convert_ascii_2_string.sh filename stingname"   | 
				
			|||
  exit 1;  | 
				
			|||
fi | 
				
			|||
 | 
				
			|||
# Check if file already exists.  | 
				
			|||
if [ ! -f "$OUTPUT" ] ; then | 
				
			|||
  # if not create the file | 
				
			|||
  touch "$OUTPUT" | 
				
			|||
else | 
				
			|||
  while true; do | 
				
			|||
    read -p "File already exists. Overrite? (y/n) " yn | 
				
			|||
    case $yn in | 
				
			|||
      [Yy]* ) break;; | 
				
			|||
      [Nn]* ) exit 1;; | 
				
			|||
          * ) echo "Please answer yes (y) or no (n).";; | 
				
			|||
    esac | 
				
			|||
  done  | 
				
			|||
fi | 
				
			|||
 | 
				
			|||
# Loop through every line to get size of array to produce | 
				
			|||
while IFS='' read -r LINE || [[ -n "$LINE" ]]; do | 
				
			|||
  LENGTH=${#LINE} | 
				
			|||
  # Add one \n every line | 
				
			|||
  CHARS=$((CHARS+LENGTH+1)) | 
				
			|||
  LINES=$((LINES+1)) | 
				
			|||
done < "$1" | 
				
			|||
 | 
				
			|||
# Create C stuff. | 
				
			|||
echo -n "const char $STR[$CHARS] = {" > "$OUTPUT" | 
				
			|||
 | 
				
			|||
echo "About the input file" | 
				
			|||
echo "--------------------" | 
				
			|||
echo "Lines: $LINES" | 
				
			|||
echo "About the output string" | 
				
			|||
echo "--------------------" | 
				
			|||
echo "Chars: $CHARS" | 
				
			|||
 | 
				
			|||
# Loop through every line | 
				
			|||
j=0 | 
				
			|||
while IFS='' read -r LINE || [[ -n "$LINE" ]]; do | 
				
			|||
  LENGTH=${#LINE} | 
				
			|||
  for i in $(seq "$((LENGTH-1))") | 
				
			|||
  do  | 
				
			|||
    echo -n "'${LINE:$i:1}', " >> "$OUTPUT" | 
				
			|||
  done | 
				
			|||
  j=$((j+1)) | 
				
			|||
  if [ $j -eq $LINES ] | 
				
			|||
  then | 
				
			|||
    # Finish with \0 | 
				
			|||
    echo "'\n', '\0'};" >> "$OUTPUT" | 
				
			|||
  else | 
				
			|||
    echo "'\n', " >> "$OUTPUT" | 
				
			|||
  fi | 
				
			|||
done < "$1" | 
				
			|||
					Loading…
					
					
				
		Reference in new issue