/*
*  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;
}