2 * Unix SMB/CIFS implementation.
3 * RPC Pipe client / server routines
4 * Copyright (C) Guenther Deschner 2009.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, see <http://www.gnu.org/licenses/>.
21 #include "../librpc/gen_ndr/ndr_spoolss.h"
22 #include "rpc_client/init_spoolss.h"
24 /*******************************************************************
25 ********************************************************************/
27 bool init_systemtime(struct spoolss_Time
*r
,
30 if (!r
|| !unixtime
) {
34 r
->year
= unixtime
->tm_year
+1900;
35 r
->month
= unixtime
->tm_mon
+1;
36 r
->day_of_week
= unixtime
->tm_wday
;
37 r
->day
= unixtime
->tm_mday
;
38 r
->hour
= unixtime
->tm_hour
;
39 r
->minute
= unixtime
->tm_min
;
40 r
->second
= unixtime
->tm_sec
;
46 time_t spoolss_Time_to_time_t(const struct spoolss_Time
*r
)
50 unixtime
.tm_year
= r
->year
- 1900;
51 unixtime
.tm_mon
= r
->month
- 1;
52 unixtime
.tm_wday
= r
->day_of_week
;
53 unixtime
.tm_mday
= r
->day
;
54 unixtime
.tm_hour
= r
->hour
;
55 unixtime
.tm_min
= r
->minute
;
56 unixtime
.tm_sec
= r
->second
;
58 return mktime(&unixtime
);
61 /*******************************************************************
62 ********************************************************************/
64 WERROR
pull_spoolss_PrinterData(TALLOC_CTX
*mem_ctx
,
65 const DATA_BLOB
*blob
,
66 union spoolss_PrinterData
*data
,
67 enum winreg_Type type
)
69 enum ndr_err_code ndr_err
;
70 ndr_err
= ndr_pull_union_blob(blob
, mem_ctx
, data
, type
,
71 (ndr_pull_flags_fn_t
)ndr_pull_spoolss_PrinterData
);
72 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
73 return WERR_GENERAL_FAILURE
;
78 /*******************************************************************
79 ********************************************************************/
81 WERROR
push_spoolss_PrinterData(TALLOC_CTX
*mem_ctx
, DATA_BLOB
*blob
,
82 enum winreg_Type type
,
83 union spoolss_PrinterData
*data
)
85 enum ndr_err_code ndr_err
;
86 ndr_err
= ndr_push_union_blob(blob
, mem_ctx
, data
, type
,
87 (ndr_push_flags_fn_t
)ndr_push_spoolss_PrinterData
);
88 if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err
)) {
89 return WERR_GENERAL_FAILURE
;
94 /*******************************************************************
95 ********************************************************************/
97 void spoolss_printerinfo2_to_setprinterinfo2(const struct spoolss_PrinterInfo2
*i
,
98 struct spoolss_SetPrinterInfo2
*s
)
100 s
->servername
= i
->servername
;
101 s
->printername
= i
->printername
;
102 s
->sharename
= i
->sharename
;
103 s
->portname
= i
->portname
;
104 s
->drivername
= i
->drivername
;
105 s
->comment
= i
->comment
;
106 s
->location
= i
->location
;
108 s
->sepfile
= i
->sepfile
;
109 s
->printprocessor
= i
->printprocessor
;
110 s
->datatype
= i
->datatype
;
111 s
->parameters
= i
->parameters
;
113 s
->attributes
= i
->attributes
;
114 s
->priority
= i
->priority
;
115 s
->defaultpriority
= i
->defaultpriority
;
116 s
->starttime
= i
->starttime
;
117 s
->untiltime
= i
->untiltime
;
118 s
->status
= i
->status
;
120 s
->averageppm
= i
->averageppm
;