#!/bin/bash
# Skrypt slocate wyszukujący w prywatnej bazie danych użytkownika
# nazwy pasujące do zadanego wzorca. Jeżeli żadna nazwa nie zostanie
# znaleziona, oznacza to, że baza danych nie istnieje. Skrypt wyświetla
# odpowiedni komunikat i tworzy bazę. Jeżeli prywatna baza jest pusta,
# wykorzystywana jest zamiast niej baza systemowa.

locatedb="/var/locate.db"
slocatedb="$HOME/.slocatedb"

if [ ! -e $slocatedb -o "$1" = "--explain" ] ; then
  cat << "EOF" >&2
Uwaga: skrypt tworzy prywatną bazę danych dla każdego użytkownika,
jednak twoja baza jeszcze nie istnieje. Do chwili jej utworzenia
(prawdopodobnie dzisiaj w nocy) będziesz korzystał z bazy plików 
dostępnych publicznie, a nie dla użytkownika ${USER:-$LOGNAME}.
EOF
  if [ "$1" = "--explain" ] ; then
    exit 0
  fi

  # Najpierw tworzony jest plik .slocatedb, aby znalazł go
  # skrypt mkslocatedb uruchamiany jako zadanie cron.

  touch $slocatedb      # Skrypt mkslocatedb przy kolejnym uruchomieniu utworzy plik.
  chmod 600 $slocatedb  # Nadanie odpowiednich uprawnień.

elif [ -s $slocatedb ] ; then
  locatedb=$slocatedb
else
  echo "Uwaga: korzystasz z publicznej bazy danych." >&2
  echo "Aby uzyskać szczegółowe informacje, użyj polecenia \"$0 --explain\"." >&2
fi

if [ -z "$1" ] ; then
  echo "Użycie: $0 wzorzec" >&2; exit 1
fi

exec grep -i "$1" $locatedb
