¿Me ayudan a compilar esta source en C para win??

Hola. Alguien que se entienda con cygwin, podría compilar esta source de las tools de torito?
Sobre todo lo hago porque me impide desarrollar una tool en otro lenguaje, y tendría que cambiar una línea en el código del wadunpacker.

"Necesito cambiar en el wadunpacker, el que no cree una carpeta con los archivos desempaquetados, sino que los desempaquete en el path del programa"

Pues les estaría muy agradecidos. Aquí os dejo la descarga y me dicen si pueden compilarlo para windows.

Descarga: bfgr_wadtools_v039a.tar.bz2

Recomendaciones de compilación que dió torito21 en su día:
*******************************************
Compilacion:
tar xvjf bfgr_wadtools_v039a.tar.bz2
    cd bfgr_wadtools_v039a
    make


(Da bastantes warnings, pero son simples faltas de casts)

Prerequisitos:
Paquetes "build-essential" y "libssl-dev".
********************************************

Gracias, espero no molestar.
Saludos.
Te aconsejo usar myngw en vez de cygwin. A mi por lo menos me da menos problemas y suele funcionar bastante bien. Aquí lo tienes compilado:
http://rapidshare.com/files/236981906/w ... r.rar.html

Ni idea si funcionará, ya que segher hizo algunas funciones un poco ambiguas, y da bastantes warnings. Examinando un poco el código parece que no debería dar problemas, pero nunca se sabe. Para compilarlo tu mismo, solo tienes que instalar mingw, las últimas cabeceras de la librería de win32, y libcrypto. Luego con un make compiula todo excepto wadunpacker, que la función mkdir no necesita el parámetro de los permisos.

Un saludo

PD: Para instalar todo:
http://rapidshare.com/files/236981300/m ... p.rar.html

- Instala el dev-cpp:
- Abre el ejecutable: c:\dev-cpp\packman.exe , y desinstala todos los paquetes.
- Instala todos los paquetes que había en el rar que te he puesto antes. (si queres seguir usando el devcpp como entorno, deberás configurar el nuevo gcc 4.2.0)
- Ejecuta c:\dev-cpp\msys.bat
- Navega hasta tu código, y escribe make. Compilará todo excepto wadunpacker.c . Cambia lo que te he dicho y compilará completamente.

Si necesitas más paquetes dimelo, ya que tengo una reserva bastante grande para mingw, y con el wadpacker tira bastante fácilmente el tema de las instalaciones.

Un saludo
nuvalo escribió:Te aconsejo usar myngw en vez de cygwin. A mi por lo menos me da menos problemas y suele funcionar bastante bien. Aquí lo tienes compilado:
http://rapidshare.com/files/236981906/w ... r.rar.html

Ni idea si funcionará, ya que segher hizo algunas funciones un poco ambiguas, y da bastantes warnings. Examinando un poco el código parece que no debería dar problemas, pero nunca se sabe. Para compilarlo tu mismo, solo tienes que instalar mingw, las últimas cabeceras de la librería de win32, y libcrypto. Luego con un make compiula todo excepto wadunpacker, que la función mkdir no necesita el parámetro de los permisos.

Un saludo

PD: Para instalar todo:
http://rapidshare.com/files/236981300/m ... p.rar.html

- Instala el dev-cpp:
- Abre el ejecutable: c:\dev-cpp\packman.exe , y desinstala todos los paquetes.
- Instala todos los paquetes que había en el rar que te he puesto antes. (si queres seguir usando el devcpp como entorno, deberás configurar el nuevo gcc 4.2.0)
- Ejecuta c:\dev-cpp\msys.bat
- Navega hasta tu código, y escribe make. Compilará todo excepto wadunpacker.c . Cambia lo que te he dicho y compilará completamente.

Si necesitas más paquetes dimelo, ya que tengo una reserva bastante grande para mingw, y con el wadpacker tira bastante fácilmente el tema de las instalaciones.

Un saludo


Nuvalo, eres el amo!! Nose cómo darte las gracias, encima de que me pones un tuto para instalar el dev-cpp!
Pues gracias a tí ya estoy consiguiendo desarrollar mi programa poco a poco. Ya verás los resultados XD.

Saludos hermano.

Edito: -Me ha surgido un problema quesque no puedo resolver al compilar el wadunpacker.
Lo he intentado de 1000 maneras al borrar las líneas donde crea "mkdir" las carpetas, desempaqueta en el path, pero no consigue encontrar la common-key.bin para desempacar todo. No entiendo que tiene que ver... :(
mira a ver si lo ves: Aquí te pongo un trozo de código del tools.c, a ver si me puedes decir como hago para que lea la c-key en el path del programa.

void get_key(const char *name, u8 *key, u32 len)
{
   char path[256];
   char *home;
   FILE *fp;

   home = getenv("HOME");
   if (home == 0)
      fatal("cannot find HOME");
   snprintf(path, sizeof path, "%s/.wii/%s", home, name);

   fp = fopen(path, "rb");
   if (fp == 0)
      fatal("cannot open %s", name);
   if (fread(key, len, 1, fp) != 1)
      fatal("error reading %s", name);
   fclose(fp);
}


Si esque la cuestion ske no consigo hacer que suelte los archivo en el path, y si lo consigo, no lee la c-key.
Gracias!!
En windows, la variable de entorno para el home es la unión de "HOMEDRIVE" y "HOMEPATH". Por lo tanto, si lo que quieres es que el directorio ".wii" esté en el "documents and settings/usuario", lo que tienes que hacer es:


void get_key(const char *name, u8 *key, u32 len)
{
   char path[512];//por si acaso
   char *home;
#ifdef WIN32
   char *drive;/en windows es necesario
#endif
   FILE *fp;

#ifdef WIN32
  drive=getenv("HOMEDRIVE");
   if (drive== 0)
      fatal("cannot find HOMEDRIVE");
  home = getenv("HOMEPATH");
  if (home == 0)
      fatal("cannot find HOMEPATH");

  snprintf(path, sizeof path, "%s%s\\.wii\\%s", home, name);// no me queda muy claro si hay que usar "\\" o "/" para separar los directorios, prueba con uno y luego con otro si no funciona
#else

   home = getenv("HOME");
   if (home == 0)
      fatal("cannot find HOME");
   snprintf(path, sizeof path, "%s/.wii/%s", home, name);

#endif
   fp = fopen(path, "r+");//en sistemas nuevos la "b" sobra, se usa un r+
   if (fp == 0)
      fatal("cannot open %s", name);
   if (fread(key, len, 1, fp) != 1)
      fatal("error reading %s", name);
   fclose(fp);
}


Lo he escrito un poco rápido, así que échale un vistazo. Eso buscará la key en "c:\documents and settings\usuario\.wii\key.bin" teniendo en cuenta que la unidad donde esta el home es "c:", y tu usuario se llama "usuario" ;) . Si quieres buscar el archivo "key.bin" junto con la aplicación, todo eso sobra, bastaría con hacer un "fopen(name)", pero así queda más chulo :)

Un saludo

PD: No he llegado a probar el código original, pero si lo estabas ejecutando desde el terminal de msys, seguramente estaría buscando el archivo de claves en "c:\dev-cpp\home\<tu usuario>\.wii", que es el directorio al que apunta el PATH dentro de esa shell.
3 respuestas