Re: wineio (iowraping under wine)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi wine people
Finally i can grant parallel port acces to TOPmax EEtools chip programmer.
I dont know why i need to modify the wineio.c wrapper.
I put below the new code with the hope that was usefull to another people.
Best Regards
Christian

====================== wineio.c ===========================
/*
 * Copyright (c) 2005 Nicolas Bernard <http://www.lafraze.net/nbernard/>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * Modified by Christian Schmitz <http://www.schlabs.com.ar> 2016
   */
/* this is a wrapper to authorize the use of a port (eg: parallel port)
 * by a program which assume it can (eg wine). */

/* this program must be setuid root */
//
// Usage:
//	wineio [your program]
//
//
// Notes:
// 1-this executable replace the binary that you normally calls
//      For example: 
//		Write
//			wineio Tmw.exe
//		instead
//			wine Tmw.exe
//
// 2- The executable must be owned by root
// 3- This program must be setuid root
//
//
#include <sys/io.h>
#include <sys/types.h>

#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

/**** adjust those values according to your configuration *****/

//#define 
WINE_PATH "/usr/bin/wine /home/wolf/.wine/drive_c/EETools/Tmw.exe"  /* the 
program to launch */
//#define PORT_FROM 0x370            /* beginning of the memory area authorize 
*/
//#define PORT_TO 0x37F              /* end of it */
#define WINE_PATH "/usr/bin/wine"  /* the program to launch */
//#define WINE_PATH "/home/wolf/bin/wineio2"  /* the program to launch */
#define PORT_FROM 0x378            /* beginning of the memory area authorize 
*/
#define PORT_TO 0x37F              /* end of it */
#define UID 1000       /* uid of the user under which to launch the program */

/************************************************************/
int debuglevel=9;
int
main(int argc, char* argv[], char *const envp[])
{
	char** nargv;
	int i;
	//Setting permissions
	if (ioperm(PORT_FROM, PORT_TO - PORT_FROM + 1, 1)) {
	        fprintf(stderr, "ioperm: %s\n", strerror(errno));
		return 1;
	}
	if(debuglevel>1){
		printf("\tPermissions \tOK (%04x-%04x)\n",PORT_FROM,PORT_TO);
	}
	//Malloc
	nargv = malloc((argc + 1) * sizeof(char*));
	if (nargv == NULL) {
		fprintf(stderr, "malloc: unable to allocate memory\n");
		return 2;
	}
	for (i = 0; i < argc; i++)
		nargv[i] = argv[i];
			//old code do not work cannot execute wine saying 
			//"is not elf 386 program"
//	nargv[argc] = NULL; 
			//New working code
	nargv[0]    = "wine";
	nargv[argc] = 0;
	if(debuglevel>1){
		printf("\tMalloc \tOK (%d)\n",argc);
	}
	//   Setuid
	if (setuid(UID)) {
		fprintf(stderr, "setuid: %s\n", strerror(errno));
		return 3;
	}
	if(debuglevel>1){
		printf("\tSetuid \tOK (%d)\n",UID);
	}
	//   Program execution
	if(debuglevel>1){
//		printf("Executing prg :%s \n",nargv[1]);
		printf("\tExecuting :%s %s\n",WINE_PATH,nargv[1]);
	}
	execve(WINE_PATH, nargv, envp);
	fprintf(stderr, "execve: %s\n", strerror(errno));
	return 4;
}
====================== end wineio.c =====================



El Lunes 02 Mayo 2016, Christian Schmitz (derem) escribió:
> > Hi,
> >
> > Windows programs that need to load a custom driver for hardware like a
> > programmer don't work with wine.  I suggest you look at the programmers
> > made by Conitec at http://www.conitec.com especially the GALEP-5D.  Not
> > only do they work with Linux they are actually running Linux.  I had the
> > same problem as you and have been very happy with the 5D.
> >
> > Best regards,
> > Fred Boatwright
>
> Dear Fred.
> 	The topmax (the chip programmer) do not use driver under wine, use direct
> parallel port access (0x378 if my memory does not fail). I get working on
> opensuse 11.0.
>
> But now under opensuse 42.1 (into the wine) i dont know how give port
> access to the application. And i dont know how solve the elf 386 binary
> problem.
>
> Interesting programmer the GALEP-5D, i use TOPMAX (lpt version).
>
> Best Regards
> Christian
>
> > On 05/02/2016 09:33 AM, Christian Schmitz (derem) wrote:
> > > Hi everyone:
> > > 	I am a wine user, and i migrate from opensuse 11.0 to the new opensuse
> > > leap42.1.
> > >
> > > I have a chip programmer connected via parallel port. This programmer
> > > is esential to my work, and the program run only on windows.
> > >
> > > In the past i use a IOWRAPPER in C that i call wineio.c. So after
> > > compile wineio, give permissions (root and sticky) i can run the
> > > software and program chips.
> > >
> > > The iowrapper used is attached to this email. This was working on
> > > opensuse 11.0 (64 bits) but in opensuse LEAP 42.1 (64 bits) i got this
> > > error:
> > >
> > > Executing prg :c:\Program Files (x86)\EEtools\Tmw.exe
> > > /usr/bin/wineio: not an i386 ELF binary... don't know how to load it
> > >
> > >
> > > I try recompile, i do make wineio, the program is compiled and run. The
> > > wineio is operative becasue the text "executing prg" is in line 90 of
> > > wineio.c
> > >
> > >
> > > I dont know how get working my hardware thru wine.
> > >
> > > Best Regards to all, any clue will be appreciated.
> > > Christian
> > > -------------- next part --------------
> > > A non-text attachment was scrubbed...
> > > Name: wineio.c
> > > Type: text/x-csrc
> > > Size: 2893 bytes
> > > Desc: not available
> > > URL:
> > > <http://www.winehq.org/pipermail/wine-users/attachments/20160502/9c982a
> > >9e /attachment.c>






[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux