Check for SYS/GL during library init. Reason is that
[AROS.git] / workbench / devs / diskimage / device / password.c
blob67dce5b6552fda42a42a59899349c06f47790134
1 /* Copyright 2007-2012 Fredrik Wikstrom. All rights reserved.
2 **
3 ** Redistribution and use in source and binary forms, with or without
4 ** modification, are permitted provided that the following conditions
5 ** are met:
6 **
7 ** 1. Redistributions of source code must retain the above copyright
8 ** notice, this list of conditions and the following disclaimer.
9 **
10 ** 2. Redistributions in binary form must reproduce the above copyright
11 ** notice, this list of conditions and the following disclaimer in the
12 ** documentation and/or other materials provided with the distribution.
14 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
15 ** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 ** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 ** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
18 ** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
19 ** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
20 ** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
21 ** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
22 ** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
23 ** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
24 ** POSSIBILITY OF SUCH DAMAGE.
27 #include "diskimage_device.h"
28 #include "device_locale.h"
30 #ifndef __AROS__
31 #include <classes/requester.h>
32 #include <proto/requester.h>
34 STRPTR RequestPassword (APTR Self, struct DiskImageUnit *unit) {
35 struct DiskImageBase *libBase = unit->LibBase;
36 struct Screen *scr = unit->Screen;
37 struct Library *SysBase = libBase->SysBase;
38 struct Library *IntuitionBase = libBase->IntuitionBase;
39 struct LocaleInfo *li = &libBase->LocaleInfo;
40 struct Library *RequesterBase;
41 STRPTR passwd = NULL;
43 passwd = AllocVec(128, MEMF_CLEAR);
44 if (!passwd) {
45 return NULL;
47 if (unit->Password) {
48 Strlcpy(passwd, unit->Password, 128);
49 unit->Password = NULL;
50 return passwd;
53 RequesterBase = OpenLibrary("requester.class", 52);
54 if (RequesterBase) {
55 Object *req;
56 req = NewObject(REQUESTER_GetClass(), NULL,
57 REQ_Type, REQTYPE_STRING,
58 /*REQ_Image, REQIMAGE_QUESTION,*/
59 REQ_TitleText, unit->Node.ln_Name,
60 REQ_BodyText, GetString(li, MSG_PASSWORD_REQ),
61 REQ_GadgetText, GetString(li, MSG_OK_GAD),
62 REQS_AllowEmpty, TRUE,
63 REQS_Invisible, TRUE,
64 REQS_Buffer, passwd,
65 REQS_MaxChars, 127,
66 TAG_END);
67 if (req) {
68 DoMethod(req, RM_OPENREQ, NULL, NULL, scr);
69 DisposeObject(req);
71 CloseLibrary(RequesterBase);
74 return passwd;
77 #else
79 STRPTR RequestPassword (APTR Self, struct DiskImageUnit *unit) {
80 STRPTR passwd = NULL;
82 passwd = AllocVec(128, MEMF_CLEAR);
83 if (!passwd) {
84 return NULL;
86 if (unit->Password) {
87 Strlcpy(passwd, unit->Password, 128);
88 unit->Password = NULL;
89 return passwd;
92 return passwd;
95 #endif