Technology [programmazione] [semi-utility linux] generatore di anagrammi / hash reverser

Asmoug

Typing Monkey
Dovendo rinfrescare le mie conoscenze di C, ho scritto questo bizzarro programma dall'impronunciabile nome di anagrhash (i nomi inventati dopo le 4 del mattino sono sempre i migliori).

Lo posto perche' penso sia scritto dignitosamente bene e copre tanti aspetti di base del C: opzioni a riga di comando, maneggiamento di base di files, un po' di operazioni con la memoria, codice ricorsivo (lo amo), le librerie GLib (mortacci loro) e mhash, architettura multithreaded.

In parole povere, questo coso sputa fuori anagrammi componibili in tre-quattro maniere (mescolando le lettere, mescolando parole intere, usando una sola parola di un gruppo definito...), che opzionalmente possono essere confrontati con un hash dato (MD5 o SHA*).

Ottimizzato per cpu dual core :pippotto: ma mi piacerebbe fargli sfruttare ogni singolo ciclo di clock che ha a disposizione.
link http://yesterdaysforecasts.heliohost.or ... grhash.zip
pagina "ufficiale" http://yesterdaysforecasts.heliohost.org/?q=node/17

edit: se qualcuno fosse pratico, mi piacerebbe fare il makefile e magari anche il pacchetto deb...
 

Massi™

Typing Monkey
massi@whitestar:~/anagrhash$ ./make.sh
massi@whitestar:~/anagrhash$ ./anagrhash -a hello
Segmentation fault



:pippotto:

Intel 900 Mhz, Ubuntu 8.04, libmhash2, libglib2, gcc 4, glibc6

Per il makefile, prova a usare questo, intanto:
Codice:
CC = gcc
SOURCES = anagram.c result.c main.c list.c
FLAGS = -Wall -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -lglib-2.0 -lgthread-2.0 -lmhash -lpthread -lrt

all:
    $(CC) $(SOURCES) -o anagrhash $(FLAGS)
clean:
    rm -f anagrhash

E' da migliorare, ma funziona.
make all = compila
make clean = pulisce
 

Asmoug

Typing Monkey
Hum, lol :pippotto: va in segfault se non usi l'opzione -h perche' tenta di fermare un thread che non ha fatto partire :awk: una cosa che non avevo testato
Comunque ho sistemato e riuploadato lo zip, grazie anche del makefile. Magari un giorno guardo cosa devo aggiungere per fargli fare make install.
 

Massi™

Typing Monkey
Beh, dato che non è una cosa particolarmente complessa, puoi semplicemente fare un cp alghashocomecazzo si chiama /usr/bin..

Ora sto riformattando il portatile, poi lo ritesto e ti faccio anche un makefile decente.. Farlo con l'eee non ne avevo molta voglia :D
 
Alto