/*
 *  cvspasswd - Dieses Programm verschlüsselt die Passwörter für die passwd-Datei von CVS
 *
 *  Das Programm wird mit 2 oder 3 Parametern aufgerufen:
 *  1. Parameter: CVS-Benutzername
 *  2. Parameter: Passwort im Klartext
 *  3. Parameter: System-Benutzername (optional, kann weggelassen werden wenn identisch mit 1)
 *  Als Ausgabe wird jeweils eine Zeile für die passwd-Datei ausgegeben. Daher kann man sich die Datei passwd zeilenweise
 *  durch das Programm zusammen setzen lassen. Beispiel:
 *
 *  cvspasswd heinz geheim1 >> passwd
 *  cvspasswd karl topsecret >> passwd
 *
 *  Compilierung mit gcc -ocvspasswd -lcrypt cvspasswd.c
 *
 *  Autor: Frank Budszuhn, autor@cvsbuch.de
 *  Datum: 29.12.2003
 *  Copyright: GNU GPL
 *  Zu finden unter: http://passwd.cvsbuch.de/
 *
 */
#include <stdio.h>
#include <crypt.h>

char s[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890./";
char salt[3];

int main (int argc, char *argv[])
{
  srand ((int) time (NULL));
  
  salt[0] = s[ rand() % sizeof (s) ];
  salt[1] = s[ rand() % sizeof (s) ];
  salt[2] = '\0';

  
  if (argc < 3 || argc > 4)
  {
    printf ("cvspasswd by Frank Budszuhn, http://passwd.cvsbuch.de/\n\n");
    printf ("Benutzung:\ncvspasswd CVS-Benutzername Passwort [System-Benutzername]\n");
    printf ("\nBeispiel:");
    printf ("\ncvspasswd heinz geheim1 heinz\n\n");
    return 1;
  }
  
  if (argc == 3)
  {
    printf ("%s:%s\n", argv[1], crypt (argv[2], salt));
  }
  else
  {
    printf ("%s:%s:%s\n", argv[1], crypt (argv[2], salt), argv[3]);
  }
  
  return 0;
}
