/[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 631 by n-ki, Fri Mar 5 06:48:08 2004 UTC revision 832 by stargo, Tue Mar 8 01:01:47 2005 UTC
# Line 8  Line 8 
8  #include <unistd.h>  #include <unistd.h>
9  #include <fcntl.h>  #include <fcntl.h>
10  #include <sys/ioctl.h>  #include <sys/ioctl.h>
 #include <linux/lp.h>  
11  #include <errno.h>  #include <errno.h>
12    
13    #if defined(__linux__)
14    #include <linux/lp.h>
15    #endif
16    
17  extern int errno;  extern int errno;
18    
19  extern RDPDR_DEVICE g_rdpdr_device[];  extern RDPDR_DEVICE g_rdpdr_device[];
20    
 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;  
 }  
   
21    
22  /* Enumeration of devices from rdesktop.c        */  /* Enumeration of devices from rdesktop.c        */
23  /* returns numer of units found and initialized. */  /* returns numer of units found and initialized. */
# Line 71  parallel_enum_devices(uint32 * id, char Line 61  parallel_enum_devices(uint32 * id, char
61    
62  static NTSTATUS  static NTSTATUS
63  parallel_create(uint32 device_id, uint32 access, uint32 share_mode, uint32 disposition,  parallel_create(uint32 device_id, uint32 access, uint32 share_mode, uint32 disposition,
64                  uint32 flags, char *filename, HANDLE * handle)                  uint32 flags, char *filename, NTHANDLE * handle)
65  {  {
66          int parallel_fd;          int parallel_fd;
67    
# Line 86  parallel_create(uint32 device_id, uint32 Line 76  parallel_create(uint32 device_id, uint32
76          if (fcntl(parallel_fd, F_SETFL, O_NONBLOCK) == -1)          if (fcntl(parallel_fd, F_SETFL, O_NONBLOCK) == -1)
77                  perror("fcntl");                  perror("fcntl");
78    
79    #if defined(LPABORT)
80            /* Retry on errors */
81          ioctl(parallel_fd, LPABORT, (int) 1);          ioctl(parallel_fd, LPABORT, (int) 1);
82    #endif
83    
84          g_rdpdr_device[device_id].handle = parallel_fd;          g_rdpdr_device[device_id].handle = parallel_fd;
85    
# Line 96  parallel_create(uint32 device_id, uint32 Line 89  parallel_create(uint32 device_id, uint32
89  }  }
90    
91  static NTSTATUS  static NTSTATUS
92  parallel_close(HANDLE handle)  parallel_close(NTHANDLE handle)
93  {  {
94          int i = get_device_index(handle);          int i = get_device_index(handle);
95          if (i >= 0)          if (i >= 0)
# Line 105  parallel_close(HANDLE handle) Line 98  parallel_close(HANDLE handle)
98          return STATUS_SUCCESS;          return STATUS_SUCCESS;
99  }  }
100    
101  NTSTATUS  static NTSTATUS
102  parallel_read(HANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result)  parallel_read(NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result)
103  {  {
104          *result = read(handle, data, length);          *result = read(handle, data, length);
105          return STATUS_SUCCESS;          return STATUS_SUCCESS;
106  }  }
107    
108  static NTSTATUS  static NTSTATUS
109  parallel_write(HANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result)  parallel_write(NTHANDLE handle, uint8 * data, uint32 length, uint32 offset, uint32 * result)
110  {  {
111          int rc = STATUS_SUCCESS;          int rc = STATUS_SUCCESS;
112    
113          int n = write(handle, data, length);          int n = write(handle, data, length);
114          if (n < 0)          if (n < 0)
115          {          {
116    #if defined(LPGETSTATUS)
117                  int status;                  int status;
118    #endif
119    
120                  *result = 0;                  *result = 0;
121                  switch (errno)                  switch (errno)
# Line 134  parallel_write(HANDLE handle, uint8 * da Line 129  parallel_write(HANDLE handle, uint8 * da
129                          default:                          default:
130                                  rc = STATUS_DEVICE_POWERED_OFF;                                  rc = STATUS_DEVICE_POWERED_OFF;
131                  }                  }
132    #if defined(LPGETSTATUS)
133                  if (ioctl(handle, LPGETSTATUS, &status) == 0)                  if (ioctl(handle, LPGETSTATUS, &status) == 0)
134                  {                  {
135                          /* coming soon: take care for the printer status */                          /* coming soon: take care for the printer status */
136                          printf("parallel_write: status = %d, errno = %d\n", status, errno);                          printf("parallel_write: status = %d, errno = %d\n", status, errno);
137                  }                  }
138    #endif
139          }          }
140          *result = n;          *result = n;
141          return rc;          return rc;
142  }  }
143    
144  static NTSTATUS  static NTSTATUS
145  parallel_device_control(HANDLE handle, uint32 request, STREAM in, STREAM out)  parallel_device_control(NTHANDLE handle, uint32 request, STREAM in, STREAM out)
146  {  {
147          if ((request >> 16) != FILE_DEVICE_PARALLEL)          if ((request >> 16) != FILE_DEVICE_PARALLEL)
148                  return STATUS_INVALID_PARAMETER;                  return STATUS_INVALID_PARAMETER;

Legend:
Removed from v.631  
changed lines
  Added in v.832

  ViewVC Help
Powered by ViewVC 1.1.26