Commit Graph

417 Commits

Author SHA1 Message Date
Michael Jumper
6f5991c504 GUAC-730: Fix headers for RDP. 2014-06-10 18:45:14 -07:00
Michael Jumper
8bc4864d9a GUAC-730: Add stddef.h to generated keymaps. Fix perl warning while we're at it. 2014-06-10 18:23:21 -07:00
Michael Jumper
6a93033b97 GUAC-670: Reduce required version of Perl. 2014-05-20 17:01:07 -07:00
Michael Jumper
32474c1114 GUAC-675: Lengthen maximum frame duration. 2014-05-11 23:42:27 -07:00
Michael Jumper
7fc3fe1fdc GUAC-674: Queue and combine png updates. Lengthen RDP frame timeout to 10ms. 2014-05-09 15:39:00 -07:00
Michael Jumper
c5ada6631c GUAC-667: Draw glyphs directly to surface. 2014-05-05 00:28:07 -07:00
Michael Jumper
1047c6192c GUAC-667: Implement clipping within common surface. 2014-05-04 23:39:02 -07:00
Michael Jumper
b6e323a7a2 GUAC-656: Flush default surface after handling updates. 2014-04-30 13:54:39 -07:00
Michael Jumper
5f0250fb1f GUAC-656: Free buffer last - surface needs to send dispose. 2014-04-30 12:32:19 -07:00
Michael Jumper
f8ac59798f GUAC-656: Migrate RDP to guac_common_surface. 2014-04-30 11:46:04 -07:00
Michael Jumper
d24aaeb614 GUAC-598: Bring up to compliance with POSIX standard claimed by source. 2014-04-11 13:48:06 -07:00
Michael Jumper
20222beaed GUAC-598: Fix warning regarding unsigned comparison against zero. 2014-04-11 13:48:06 -07:00
Michael Jumper
de8c64a03a GUAC-614: Remove old prototypes from RDP guac handlers. 2014-04-10 15:42:46 -07:00
Michael Jumper
0096cf677c GUAC-614: Migrate RDP to simpler stream API. Add missing linkage to RDP build. Fix last character truncation bug. 2014-04-10 14:53:32 -07:00
Michael Jumper
78b4ad56a1 GUAC-611: Add missing headers. 2014-04-09 19:09:41 -07:00
Michael Jumper
c95e2fd056 GUAC-608: Make guac_iconv input const. 2014-04-08 16:33:43 -07:00
Michael Jumper
6743795a68 GUAC-608: Migrate RDP to common clipboard code for inbound data. 2014-04-08 15:31:56 -07:00
Michael Jumper
3cf644009f GUAC-608: Migrate RDP to common clipboard code for outbound data. 2014-04-08 15:06:54 -07:00
Michael Jumper
2aa7252d1b GUAC-608: Implement outbound clipboard streaming. Stub out inbound. 2014-04-07 19:22:53 -07:00
Michael Jumper
c180de9444 GUAC-447: Implement paste of Unicode text. 2014-04-02 15:35:09 -07:00
Michael Jumper
3f19e2b2bb GUAC-584: Name of constant should be CP1252, not ISO-8859-1. 2014-04-02 14:22:22 -07:00
Michael Jumper
49ffaf0826 GUAC-584: Use CP1252 for RDP copy of non-unicode text. 2014-04-02 14:10:45 -07:00
Michael Jumper
b203cf1fd2 GUAC-584: Remove old free() - no longer necessary as buffer is static. 2014-04-01 23:40:00 -07:00
Michael Jumper
7cf5d02019 GUAC-584: Simplify copy logic. Store clipboard in static 256K buffer. Convert from UTF16 properly. 2014-04-01 18:41:55 -07:00
Michael Jumper
bbf451a552 GUAC-584: Handle Unicode data (STUB). Need real conversion code with actual length calculations. 2014-03-31 16:33:23 -07:00
Michael Jumper
0b414ed9b5 GUAC-584: Add basic handling for Unicode text - just stubs, no converting to UTF-8 yet. 2014-03-31 15:46:49 -07:00
Michael Jumper
78d998a076 GUAC-573: Add new keymaps and generator.pl to EXTRA_DIST. 2014-03-26 11:07:45 -07:00
Michael Jumper
d1a66f5616 GUAC-552: If resolution is above 96 DPI, try to find a reasonable screen size at 96 DPI or 120 DPI, using native resolution as a last resort. 2014-03-25 14:25:34 -07:00
Michael Jumper
26b5a0c21e GUAC-556: Abort at higher level in RDP message wait function. 2014-03-22 14:56:09 -07:00
Michael Jumper
22b2618562 GUAC-556: Use guac_client_abort() for RDP errors. 2014-03-22 14:42:22 -07:00
Michael Jumper
bd40dd30b2 GUAC-556: Send UPSTREAM_ERROR for unexpected disconnect and failure to connect in RDP. 2014-03-19 22:16:35 -07:00
Michael Jumper
fdf2036cfe GUAC-548: Migrate to new error codes throughout protocol support. 2014-03-18 12:26:01 -07:00
Michael Jumper
680b3cc147 Analogous legacy macro for Stream_Length() is stream_get_size(), not stream_get_length(). 2014-03-11 17:01:13 -07:00
Michael Jumper
91d381d055 Include winpr-compat in main build. 2014-03-11 16:42:41 -07:00
Michael Jumper
cdc532e8ba Use fixed-size SVC name buffer. Validate length. 2014-03-06 11:48:52 -08:00
Michael Jumper
bccc1c7c76 Clean up streaming code - migrate to separate rdp_stream.[ch] 2014-03-03 16:18:14 -08:00
Michael Jumper
243f24722c Fix typo in comment. 2014-03-03 15:31:00 -08:00
Michael Jumper
86d2266580 Handle pipe receive, write to SVC. 2014-03-02 12:38:28 -08:00
Michael Jumper
ed367824a6 Add receive stub for inbound pipes. 2014-03-02 12:15:17 -08:00
Michael Jumper
e26c0122fd Properly associate inbound pipes. 2014-03-02 12:06:08 -08:00
Michael Jumper
e37c5c462f Add typing to stream data. 2014-03-02 11:53:21 -08:00
Michael Jumper
38e4c9afba Implement SVC remove. Rely on terminate for SVC cleanup. 2014-03-02 11:24:06 -08:00
Michael Jumper
2d885fdec2 Send any received data to pipe. 2014-03-02 11:12:27 -08:00
Michael Jumper
38aa467233 Create outbound pipes for SVC. 2014-03-02 10:51:52 -08:00
Michael Jumper
d630d66c8b Implement get for SVC. 2014-03-02 10:46:38 -08:00
Michael Jumper
912cc4d0cf Maintain SVC list. 2014-03-02 10:38:31 -08:00
Michael Jumper
4b1c8ec7ff Actually load guacsvc plugin for each static channel. 2014-03-02 10:09:32 -08:00
Michael Jumper
cc5793a39b Move SVC data into own structure. Add stubs for management. 2014-03-02 09:56:47 -08:00
Michael Jumper
b835299898 Store channel names as NULL-terminated list. Stub out init. 2014-03-01 22:48:15 -08:00
Michael Jumper
b88e23a7d2 Add static-channels and corresponding storage. 2014-03-01 16:43:55 -08:00
Michael Jumper
aa4896da07 Add guacsvc plugin. 2014-03-01 16:42:39 -08:00
Michael Jumper
a6a72d950c Rename parameters more sanely. Add support for working dir. 2014-01-30 00:42:37 -08:00
Michael Jumper
007cb2c66c Fix args. 2014-01-30 00:30:29 -08:00
Michael Jumper
59abfadbd1 Compatibility with legacy FreeRDP. 2014-01-30 00:17:23 -08:00
Michael Jumper
10d987a0c3 Working RemoteApp with current FreeRDP. 2014-01-30 00:04:31 -08:00
Michael Jumper
68879cc2ec Init RemoteApp settings. Load RAIL plugin. 2014-01-29 16:25:30 -08:00
Michael Jumper
56c8c4f740 Add arguments for RemoteApp name and command. 2014-01-29 15:58:04 -08:00
Michael Jumper
0522077963 Migrate RDP to common pointer code. 2014-01-06 16:21:23 -08:00
Michael Jumper
5afe6daac9 Fix logic error in keymap find proc. 2014-01-03 12:06:19 -08:00
Michael Jumper
be90a449e7 Add French keymap. 2014-01-03 02:08:06 -08:00
Michael Jumper
371715d058 Add German keymap. 2014-01-03 01:55:51 -08:00
Michael Jumper
d041c1aaab Fix Unicode support in generator. 2014-01-03 01:03:57 -08:00
Michael Jumper
6027084b05 Add failsafe keymap. 2014-01-02 23:54:15 -08:00
Michael Jumper
4e47154aff Remove unneeded .gitignore. 2014-01-02 23:43:54 -08:00
Michael Jumper
3a922355e3 Implement keymap find. 2014-01-02 23:41:16 -08:00
Michael Jumper
54a570e0d3 Remove keymaps. 2014-01-02 22:34:42 -08:00
Michael Jumper
4d684d7166 Rename generated file. 2014-01-02 22:30:14 -08:00
Michael Jumper
8e3c512256 Add keymap generation to build. 2014-01-02 22:24:02 -08:00
Michael Jumper
b840935530 Generate one file. 2014-01-02 21:54:17 -08:00
Michael Jumper
b805e35ca7 Also generate main header and source. 2014-01-02 21:23:31 -08:00
Michael Jumper
a0531ca152 Add keymap parsing script and corresponding keymap for en-us. 2014-01-02 17:17:35 -08:00
Michael Jumper
442ed427a0 Clean up includes, clean up build. 2014-01-01 14:52:01 -08:00
Michael Jumper
0303c4e24b Relicense everything (except French keymap) as MIT. Status of French keymap is TBD. 2014-01-01 14:46:18 -08:00
Michael Jumper
57f7149786 Clean up handling of event flags. 2013-12-28 18:20:51 -08:00
Michael Jumper
c81be87790 Scale back resolution assuming 96 DPI on the desktop side. 2013-12-27 00:34:37 -08:00
Michael Jumper
6479d0e8fa Start download if file moved to Download folder. 2013-12-17 22:47:00 -08:00
Michael Jumper
88f9f883b4 Move download logic into own function. 2013-12-17 22:46:15 -08:00
Michael Jumper
a1d4e2d2e6 Add maximum buffer size. 2013-12-17 14:28:20 -08:00
Michael Jumper
7ee813bbfd Allocate buffer to allow large reads, rather than force all reads down to 4K. 2013-12-17 14:17:56 -08:00
Michael Jumper
c38b687ab6 Add namespace to DEBUG variable, add missing UINT64 type to compat. 2013-12-11 22:27:35 -08:00
Michael Jumper
478235be70 Check path lengths. 2013-12-11 15:00:00 -08:00
Michael Jumper
89b55ecab5 Explicitly do not support locks or setting label. 2013-12-11 14:40:08 -08:00
Michael Jumper
866ba2a7b9 Handle device info. 2013-12-11 14:21:59 -08:00
Michael Jumper
5e87949e31 Implement rest of dir info. 2013-12-11 14:11:16 -08:00
Michael Jumper
672e20c051 Add HIDDEN and ARCHIVE attributes. 2013-12-11 13:49:02 -08:00
Michael Jumper
e0450d0dc5 Remove unnecessary alloc. 2013-12-11 13:48:41 -08:00
Michael Jumper
56bb0b3740 Fix size and full size info. 2013-12-11 01:25:54 -08:00
Michael Jumper
338b83a3a7 Ignore write access request if file is a directory. 2013-12-11 01:25:40 -08:00
Michael Jumper
6d88bec136 Implement directory deletion. 2013-12-10 23:12:13 -08:00
Michael Jumper
647850c8ce Tighten scope, fix initialization. 2013-12-10 23:12:01 -08:00
Michael Jumper
7d0e8093eb Improve logging. 2013-12-09 00:41:27 -08:00
Michael Jumper
f17cd33aa4 Implement size info. 2013-12-09 00:41:27 -08:00
Michael Jumper
efc7477ef5 Free stream data. Delete file after opening for download. 2013-12-09 00:41:27 -08:00
Michael Jumper
ee20114c67 Ignore acks for non-download streams. 2013-12-09 00:41:27 -08:00
Michael Jumper
d30ade6bef Implement file download. 2013-12-09 00:41:27 -08:00
Michael Jumper
b262440ba5 Move download-specific logic to rdpdr. 2013-12-09 00:41:27 -08:00
Michael Jumper
f4ff04ab30 Initiate download whenever file written within Download folder. 2013-12-09 00:41:27 -08:00
Michael Jumper
ef8d8e3bc1 Remove check for download from open. Add tracking of file writes. 2013-12-09 00:41:26 -08:00
Michael Jumper
847f9451c1 RemoveSent and Outbox special dirs - use only Download. 2013-12-09 00:41:26 -08:00
Michael Jumper
3a7c9bbc5d Add flag and stub for download. 2013-12-09 00:41:26 -08:00
Michael Jumper
1570072b46 Only complain about EEXIST for mkdir() if O_EXCL is set. Directory creation open should use ACCESS_GENERIC_READ (anything with WRITE will fail). 2013-12-09 00:41:26 -08:00
Michael Jumper
96637b5d19 Create Sent as necessary. 2013-12-09 00:41:26 -08:00
Michael Jumper
e5f919f75c Reroute files from Outbox to Sent. 2013-12-09 00:41:26 -08:00
Michael Jumper
296836f65d Implement file truncation. 2013-12-09 00:41:26 -08:00
Michael Jumper
3ebed6a85c Fix handling of append. 2013-12-09 00:41:26 -08:00
Michael Jumper
52e65e043a Implement deletion. 2013-12-09 00:41:26 -08:00
Michael Jumper
9d85704f03 Additional debugging. Advertise case sensitivity in vol info. 2013-12-09 00:41:26 -08:00
Michael Jumper
742452b1d4 IMPLEMENT UPLOAD!!! 2013-12-09 00:41:26 -08:00
Michael Jumper
aacb726b66 Separate RDP filesystem operations from RDPDR. 2013-12-09 00:41:26 -08:00
Michael Jumper
28c3c7d926 Move read/write to rdpdr_fs. 2013-12-09 00:41:26 -08:00
Michael Jumper
77db391a12 Implement rename. 2013-12-09 00:41:26 -08:00
Michael Jumper
a72fbe5745 Add debug messages, stub basic info set, implement attribute tag query. 2013-12-09 00:41:26 -08:00
Michael Jumper
b5af07aee2 Fix directory creation. 2013-12-09 00:41:26 -08:00
Michael Jumper
dfd55f0ba4 Add debug/trace logging. 2013-12-09 00:41:25 -08:00
Michael Jumper
caea2d4acd Add debug header. 2013-12-09 00:41:25 -08:00
Michael Jumper
70b361b8b6 Handle mkdir() return code. 2013-12-09 00:41:25 -08:00
Michael Jumper
39c31faa9b Add error codes and better handling. 2013-12-09 00:41:25 -08:00
Michael Jumper
3400e9b122 Create directory if necessary. 2013-12-09 00:41:25 -08:00
Michael Jumper
655cb8e9f2 Implement attribute info query. 2013-12-09 00:41:25 -08:00
Michael Jumper
22d0e496f5 Move to IOCOMPLETION function rather that duplicating header everywhere. 2013-12-09 00:41:25 -08:00
Michael Jumper
911746ae24 Add options for file attributes and create options to open. Fix create disposition of files in directory list. 2013-12-09 00:41:25 -08:00
Michael Jumper
67c461be40 Use constants for file mode. 2013-12-09 00:41:25 -08:00
Michael Jumper
da7168e161 Correct (theoretically) semantics of open create disposition. 2013-12-09 00:41:25 -08:00
Michael Jumper
f9cf524993 Ignore set end-of-file and set allocation. 2013-12-09 00:41:25 -08:00
Michael Jumper
683e8c24c0 Add stubs for file information set operations. 2013-12-09 00:41:25 -08:00
Michael Jumper
f7acfbb1a0 Fix use of mode within open(). 2013-12-09 00:41:25 -08:00
Michael Jumper
c07d8dd950 Only register drive if enabled. 2013-12-09 00:41:25 -08:00
Michael Jumper
a41752aead Remove stub logging of bytes received. 2013-12-09 00:41:25 -08:00
Michael Jumper
5004986563 Add file upload stubs. 2013-12-09 00:41:25 -08:00
Michael Jumper
c70efcea4d Handle other write flags, log and handler read/write errors. 2013-12-09 00:41:24 -08:00
Michael Jumper
582e1a60b3 Implement write. 2013-12-09 00:41:24 -08:00
Michael Jumper
7a1b76881f Implement pattern matching in dir search. 2013-12-09 00:41:24 -08:00
Michael Jumper
c2e1065ea2 Remove STATUS_NO_MORE_FILES log message. 2013-12-09 00:41:24 -08:00
Michael Jumper
d0ee38f7c6 Remove and cleanup logging. 2013-12-09 00:41:24 -08:00
Michael Jumper
f50529dac0 Fix buffer size. 2013-12-09 00:41:24 -08:00
Michael Jumper
65c5ed379e Implement read. 2013-12-09 00:41:24 -08:00
Michael Jumper
3217b97f26 Add ffunction for retrieving a file by file ID safely. Migrate to new function. 2013-12-09 00:41:24 -08:00
Michael Jumper
dd1761790a Fix query directory response (missing final null byte). 2013-12-09 00:41:24 -08:00
Michael Jumper
98a1a494cd Modify output to match rdesktop packets more closely. Still doesn't work. 2013-12-09 00:41:24 -08:00
Michael Jumper
aec6c167e3 Do not send information for open. 2013-12-09 00:41:24 -08:00
Michael Jumper
1c3d0ba741 Add missing length to dir query response. 2013-12-09 00:41:24 -08:00
Michael Jumper
dfa30fbef6 Fill output with zeroes for short name. 2013-12-09 00:41:24 -08:00
Michael Jumper
353b6316ac Stub device control (always succeed). 2013-12-09 00:41:24 -08:00
Michael Jumper
b6fb2b850b Implement standard info. 2013-12-09 00:41:24 -08:00
Michael Jumper
634eb17b20 Remove reserved fields, fix packet lengths. 2013-12-09 00:41:24 -08:00
Michael Jumper
95230ae901 Use generic access, default to read-only. 2013-12-09 00:41:24 -08:00
Michael Jumper
cf3196d8ca Properly calculate remaining length of path. 2013-12-09 00:41:23 -08:00
Michael Jumper
34586265da Stubbed dir info. Remove name from file struct. Fix read_dir. 2013-12-09 00:41:23 -08:00
Michael Jumper
f00cb33619 Implement UTF-8 to UTF-16 conversion function. 2013-12-09 00:41:23 -08:00
Michael Jumper
94888d1f47 Move to libguac unicode functions in RDP. 2013-12-09 00:41:23 -08:00
Michael Jumper
439cd7c903 Move to attributes rather than type. 2013-12-09 00:41:23 -08:00
Michael Jumper
32fdcdc660 Fix path conversion. Convert path in dir info. 2013-12-09 00:41:23 -08:00
Michael Jumper
69d636860d Add path normalization. 2013-12-09 00:41:23 -08:00
Michael Jumper
52f9bac805 Add guac_rdpdr_fs_read_dir(). Bump _POSIX_C_SOURCE value as necessary for fdopendir(). 2013-12-09 00:41:23 -08:00
Michael Jumper
9773f348e2 Actually close in close. 2013-12-09 00:41:23 -08:00
Michael Jumper
06c2dfd8d2 Add file_id to volume queries, send real times and attributes back. 2013-12-09 00:41:23 -08:00
Michael Jumper
117e9053f4 Pull file type during open. 2013-12-09 00:41:23 -08:00
Michael Jumper
06a18f6766 Pull info from stat() during file open. 2013-12-09 00:41:23 -08:00
Michael Jumper
2f662257d9 Remove unused header. Fix header file macros. Add comments. 2013-12-09 00:41:23 -08:00
Michael Jumper
1263d261f4 Add stubs for dir information handlers 2013-12-09 00:41:23 -08:00
Michael Jumper
e238df9581 Comply with naming convention of message processors. 2013-12-09 00:41:23 -08:00
Michael Jumper
d877e1f236 Add stubs for FS message functions. 2013-12-09 00:41:23 -08:00
Michael Jumper
85b754f2b7 Fix path translation function. 2013-12-09 00:41:23 -08:00
Michael Jumper
9fcb3e3678 Actually resolve and open files. 2013-12-09 00:41:22 -08:00
Michael Jumper
f24d4b58fa Add error codes for open. 2013-12-09 00:41:22 -08:00
Michael Jumper
f3ef451527 Add stubs for minor functions. 2013-12-09 00:41:22 -08:00
Michael Jumper
4bdbaceccc Fix logic in file open (should NOT allocate new ID if open fails. 2013-12-09 00:41:22 -08:00
Michael Jumper
c31e3b38ad Add drive-path parameter. 2013-12-09 00:41:22 -08:00
Michael Jumper
7b843a806f Split rdpdr_fs up into logical files. 2013-12-09 00:41:22 -08:00
Michael Jumper
bc662975ce For now, return no-such-file for the '' file... will migrate to actual file path parsing. 2013-12-09 00:41:22 -08:00
Michael Jumper
adf45ab79e Add file time macros and more attribute constants. Stub volume and basic file info. 2013-12-09 00:41:22 -08:00
Michael Jumper
2e4a67200c Add constants. More open() implementation. Handle case where no file IDs are available. 2013-12-09 00:41:22 -08:00
Michael Jumper
d9cae3d361 Add unicode conversion functions. Partially handle incoming parameters for open. 2013-12-09 00:41:22 -08:00
Michael Jumper
8731f282cc Initial stubs for open/close. 2013-12-09 00:41:22 -08:00
Michael Jumper
061de84422 Add 64-bit operations to stream. 2013-12-09 00:41:22 -08:00
Michael Jumper
5efda4d328 Send drive capability. 2013-12-09 00:41:22 -08:00
Michael Jumper
f07cd58707 Add drive-enabled option. 2013-12-09 00:41:22 -08:00
Michael Jumper
08eb5625fc Add filesystem device. 2013-12-09 00:41:22 -08:00
Michael Jumper
9a8363e0ba Test for fastpath settings. 2013-11-05 12:34:36 -08:00
Michael Jumper
7547b4b5bd Ticket #452: Fix segfault related to FastPath and pointer checks. 2013-11-05 02:02:34 -08:00
Michael Jumper
cec58edef3 Add abort instruction. Add status codes to abort and error. 2013-10-10 14:47:12 -07:00
Michael Jumper
daa10be990 Remove old use of blob. Use new file semantics. 2013-09-24 12:58:58 -07:00
Michael Jumper
fbdb6876d9 Migrate to libguac audio. Migrate to improved stream protocol. 2013-09-24 12:01:02 -07:00
Michael Jumper
23e4e43722 Round screen width down, rather than up. 2013-09-03 14:09:33 -07:00
Michael Jumper
73df645ce6 Change RDP default security to RDP. 2013-08-26 21:26:38 -07:00
Michael Jumper
9d47ae0a50 Add missing winpr-wtypes.h header. 2013-08-26 17:07:46 -07:00
Michael Jumper
9903d3d0d9 Switch from enable-auth to disable-auth, enabling auth by default. Use ANY security mode by default. Warn if authentication is required but credentials were not given. 2013-08-25 11:35:31 -07:00
Michael Jumper
da016d5153 Log chosen security method. 2013-08-24 12:37:43 -07:00
Michael Jumper
ac2bf524d9 Shorten parameter names, combine enable-tls and enable-nla into a single security parameter. 2013-08-24 12:30:38 -07:00
Michael Jumper
d2cdb055f8 Add options for controlling TLS and NLA security, as well as authentication and bad certs. 2013-08-24 01:17:27 -07:00
Michael Jumper
44d0e08a3c Drop frame timeout to 0ms 2013-08-22 15:27:01 -07:00
Michael Jumper
1f0ae7b4ba Do not use pExtendedData beyond connect handler. NULL out pExtendedData once done. 2013-08-22 14:52:09 -07:00
Michael Jumper
1887102505 Add frame timeout. Reduce frame max duration to 40ms. 2013-08-20 21:13:26 -07:00
Michael Jumper
280622c027 Bump max frame duration to 80 ms (12.5 FPS). 2013-08-20 11:38:12 -07:00
Michael Jumper
21420aaf5c Stay in handle_messages for 30ms max (per frame). 2013-08-20 11:32:47 -07:00
Michael Jumper
8099a57fc6 Switch to VNC-style wait. 2013-07-28 19:43:20 -07:00
Michael Jumper
4b6aa01517 Unlock lock properly. 2013-07-28 19:43:20 -07:00
Michael Jumper
ce759ccbe6 Flush only automatically. Stay in handle_messages as long as data is available. 2013-07-28 19:43:20 -07:00
Michael Jumper
a52a13584b Initialize devices_registered. 2013-07-24 23:51:49 -07:00
Michael Jumper
1e521a1696 Call free handler on devices. Only add printer if enabled. 2013-07-24 22:49:24 -07:00