/[rdesktop]/sourceforge.net/trunk/rdesktop/parallel.c
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /sourceforge.net/trunk/rdesktop/parallel.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 664 by astrand, Sat Apr 17 07:14:41 2004 UTC revision 985 by astrand, Tue Aug 23 20:27:14 2005 UTC
# Line 1  Line 1 
1    /* -*- c-basic-offset: 8 -*-
2       rdesktop: A Remote Desktop Protocol client.
3       Copyright (C) Matthew Chapman 1999-2005
4      
5       This program is free software; you can redistribute it and/or modify
6       it under the terms of the GNU General Public License as published by
7       the Free Software Foundation; either version 2 of the License, or
8       (at your option) any later version.
9    
10       This program is distributed in the hope that it will be useful,
11       but WITHOUT ANY WARRANTY; without even the implied warranty of
12       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13       GNU General Public License for more details.
14      
15       You should have received a copy of the GNU General Public License
16       along with this program; if not, write to the Free Software
17       Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18    */
19  #define MAX_PARALLEL_DEVICES            1  #define MAX_PARALLEL_DEVICES            1
20    
21  #define FILE_DEVICE_PARALLEL            0x22  #define FILE_DEVICE_PARALLEL            0x22
# Line 14  Line 32 
32  #include <linux/lp.h>  #include <linux/lp.h>
33  #endif  #endif
34    
 extern int errno;  
   
35  extern RDPDR_DEVICE g_rdpdr_device[];  extern RDPDR_DEVICE g_rdpdr_device[];
36    
 static PARALLEL_DEVICE *  
 get_parallel_data(HANDLE handle)  
 {  
         int index;  
   
         for (index = 0; index < RDPDR_MAX_DEVICES; index++)  
         {  
                 if (handle == g_rdpdr_device[index].handle)  
                         return (PARALLEL_DEVICE *) g_rdpdr_device[index].pdevice_data;  
         }  
         return NULL;  
 }  
   
37    
38  /* Enumeration of devices from rdesktop.c        */  /* Enumeration of devices from rdesktop.c        */
39  /* returns numer of units found and initialized. */  /* returns numer of units found and initialized. */
# Line 45  parallel_enum_devices(uint32 * id, char Line 48  parallel_enum_devices(uint32 * id, char
48          char *pos2;          char *pos2;
49          int count = 0;          int count = 0;
50    
51          // skip the first colon          /* skip the first colon */
52          optarg++;          optarg++;
53          while ((pos = next_arg(optarg, ',')) && *id < RDPDR_MAX_DEVICES)          while ((pos = next_arg(optarg, ',')) && *id < RDPDR_MAX_DEVICES)
54          {          {
# Line 60  parallel_enum_devices(uint32 * id, char Line 63  parallel_enum_devices(uint32 * id, char
63                  strcpy(g_rdpdr_device[*id].local_path, pos2);                  strcpy(g_rdpdr_device[*id].local_path, pos2);
64                  printf("PARALLEL %s to %s\n", optarg, pos2);                  printf("PARALLEL %s to %s\n", optarg, pos2);
65    
66                  // set device type                  /* set device type */
67                  g_rdpdr_device[*id].device_type = DEVICE_TYPE_PARALLEL;                  g_rdpdr_device[*id].device_type = DEVICE_TYPE_PARALLEL;
68                  g_rdpdr_device[*id].pdevice_data = (void *) ppar_info;                  g_rdpdr_device[*id].pdevice_data = (void *) ppar_info;
69                  g_rdpdr_device[*id].handle = 0;                  g_rdpdr_device[*id].handle = 0;
# Line 74  parallel_enum_devices(uint32 * id, char Line 77  parallel_enum_devices(uint32 * id, char
77    
78  static NTSTATUS  static NTSTATUS
79  parallel_create(uint32 device_id, uint32 access, uint32 share_mode, uint32 disposition,  parallel_create(uint32 device_id, uint32 access, uint32 share_mode, uint32 disposition,
80                  uint32 flags, char *filename, HANDLE * handle)                  uint32 flags, char *filename, NTHANDLE * handle)
81  {  {
82          int parallel_fd;          int parallel_fd;
83    
# Line 102  parallel_create(uint32 device_id, uint32 Line 105  parallel_create(uint32 device_id, uint32
105  }  }
106    
107  static NTSTATUS  static NTSTATUS
108  parallel_close(HANDLE handle)  parallel_close(NTHANDLE handle)
109  {  {
110          int i = get_device_index(handle);          int i = get_device_index(handle);
111          if (i >= 0)          if (i >= 0)
# Line 112  parallel_close(HANDLE handle) Line 115  parallel_close(HANDLE handle)
115  }  }
116    
117  static NTSTATUS  static NTSTATUS
118  parallel_read(HANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result)  parallel_read(NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result)
119  {  {
120          *result = read(handle, data, length);          *result = read(handle, data, length);
121          return STATUS_SUCCESS;          return STATUS_SUCCESS;
122  }  }
123    
124  static NTSTATUS  static NTSTATUS
125  parallel_write(HANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result)  parallel_write(NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result)
126  {  {
127          int rc = STATUS_SUCCESS;          int rc = STATUS_SUCCESS;
128    
129          int n = write(handle, data, length);          int n = write(handle, data, length);
130          if (n < 0)          if (n < 0)
131          {          {
132    #if defined(LPGETSTATUS)
133                  int status;                  int status;
134    #endif
135    
136                  *result = 0;                  *result = 0;
137                  switch (errno)                  switch (errno)
# Line 153  parallel_write(HANDLE handle, uint8 * da Line 158  parallel_write(HANDLE handle, uint8 * da
158  }  }
159    
160  static NTSTATUS  static NTSTATUS
161  parallel_device_control(HANDLE handle, uint32 request, STREAM in, STREAM out)  parallel_device_control(NTHANDLE handle, uint32 request, STREAM in, STREAM out)
162  {  {
163          if ((request >> 16) != FILE_DEVICE_PARALLEL)          if ((request >> 16) != FILE_DEVICE_PARALLEL)
164                  return STATUS_INVALID_PARAMETER;                  return STATUS_INVALID_PARAMETER;

Legend:
Removed from v.664  
changed lines
  Added in v.985

  ViewVC Help
Powered by ViewVC 1.1.26