1 /****************************************************************************
3 * Nintendo Wii/GameCube SMB implementation
6 * Modified by Tantric to utilize NTLM authentication
7 * PathInfo added by rodries
8 * SMB devoptab by scip, rodries
10 * You will find WireShark (http://www.wireshark.org/)
11 * invaluable for debugging SAMBA implementations.
14 * Implementing CIFS - Christopher R Hertel
15 * http://www.ubiqx.org/cifs/SMB.html
19 * This library is free software; you can redistribute it and/or
20 * modify it under the terms of the GNU Lesser General Public
21 * License as published by the Free Software Foundation; either
22 * version 2.1 of the License, or (at your option) any later version.
24 * This library is distributed in the hope that it will be useful,
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
27 * Lesser General Public License for more details.
29 * You should have received a copy of the GNU Lesser General Public
30 * License along with this library; if not, write to the Free Software
31 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
32 ****************************************************************************/
39 #define SMB_MAXPATH 4096
46 #define SMB_BAD_PROTOCOL -2
47 #define SMB_BAD_COMMAND -3
48 #define SMB_PROTO_FAIL -4
49 #define SMB_NOT_USER -5
50 #define SMB_BAD_KEYLEN -6
51 #define SMB_BAD_DATALEN -7
52 #define SMB_BAD_LOGINDATA -8
55 * SMB File Open Function
58 #define SMB_OF_TRUNCATE 2
59 #define SMB_OF_CREATE 16
64 #define SMB_SRCH_READONLY 1
65 #define SMB_SRCH_HIDDEN 2
66 #define SMB_SRCH_SYSTEM 4
67 #define SMB_SRCH_VOLUME 8
68 #define SMB_SRCH_DIRECTORY 16
69 #define SMB_SRCH_ARCHIVE 32
72 * SMB File Access Modes
74 #define SMB_OPEN_READING 0
75 #define SMB_OPEN_WRITING 1
76 #define SMB_OPEN_READWRITE 2
77 #define SMB_OPEN_COMPATIBLE 0
78 #define SMB_DENY_READWRITE 0x10
79 #define SMB_DENY_WRITE 0x20
80 #define SMB_DENY_READ 0x30
81 #define SMB_DENY_NONE 0x40
89 * SMB Connection Handle
96 typedef void* SMBFILE
;
99 SMB Long Filename Directory Entry
116 /*** Functions to be used with stdio API ***/
117 bool smbInitDevice(const char* name
, const char *user
, const char *password
, const char *share
, const char *ip
);
118 bool smbInit(const char *user
, const char *password
, const char *share
, const char *ip
);
119 void smbClose(const char* name
);
120 bool smbCheckConnection(const char* name
);
121 void smbSetSearchFlags(unsigned short flags
);
124 s32
SMB_Connect(SMBCONN
*smbhndl
, const char *user
, const char *password
, const char *share
, const char *IP
);
125 void SMB_Close(SMBCONN smbhndl
);
126 s32
SMB_Reconnect(SMBCONN
*_smbhndl
, bool test_conn
);
129 s32
SMB_PathInfo(const char *filename
, SMBDIRENTRY
*sdir
, SMBCONN smbhndl
);
130 s32
SMB_FindFirst(const char *filename
, unsigned short flags
, SMBDIRENTRY
*sdir
, SMBCONN smbhndl
);
131 s32
SMB_FindNext(SMBDIRENTRY
*sdir
,SMBCONN smbhndl
);
132 s32
SMB_FindClose(SMBDIRENTRY
*sdir
,SMBCONN smbhndl
);
135 SMBFILE
SMB_OpenFile(const char *filename
, unsigned short access
, unsigned short creation
,SMBCONN smbhndl
);
136 void SMB_CloseFile(SMBFILE sfid
);
137 s32
SMB_ReadFile(char *buffer
, size_t size
, off_t offset
, SMBFILE sfid
);
138 s32
SMB_WriteFile(const char *buffer
, size_t size
, off_t offset
, SMBFILE sfid
);
139 s32
SMB_CreateDirectory(const char *dirname
, SMBCONN smbhndl
);
140 s32
SMB_DeleteDirectory(const char *dirname
, SMBCONN smbhndl
);
141 s32
SMB_DeleteFile(const char *filename
, SMBCONN smbhndl
);
142 s32
SMB_Rename(const char *filename
, const char * newname
, SMBCONN smbhndl
);
143 s32
SMB_DiskInformation(struct statvfs
*buf
, SMBCONN smbhndl
);