1*d5c9a868SElliott Hughes #ifndef FILE_NAME_H 2*d5c9a868SElliott Hughes #define FILE_NAME_H 3*d5c9a868SElliott Hughes 4*d5c9a868SElliott Hughes /* Copyright 2009 Alain Knaff. 5*d5c9a868SElliott Hughes * This file is part of mtools. 6*d5c9a868SElliott Hughes * 7*d5c9a868SElliott Hughes * Mtools is free software: you can redistribute it and/or modify 8*d5c9a868SElliott Hughes * it under the terms of the GNU General Public License as published by 9*d5c9a868SElliott Hughes * the Free Software Foundation, either version 3 of the License, or 10*d5c9a868SElliott Hughes * (at your option) any later version. 11*d5c9a868SElliott Hughes * 12*d5c9a868SElliott Hughes * Mtools is distributed in the hope that it will be useful, 13*d5c9a868SElliott Hughes * but WITHOUT ANY WARRANTY; without even the implied warranty of 14*d5c9a868SElliott Hughes * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*d5c9a868SElliott Hughes * GNU General Public License for more details. 16*d5c9a868SElliott Hughes * 17*d5c9a868SElliott Hughes * You should have received a copy of the GNU General Public License 18*d5c9a868SElliott Hughes * along with Mtools. If not, see <http://www.gnu.org/licenses/>. 19*d5c9a868SElliott Hughes */ 20*d5c9a868SElliott Hughes 21*d5c9a868SElliott Hughes #include <sysincludes.h> 22*d5c9a868SElliott Hughes #include "mtools.h" 23*d5c9a868SElliott Hughes 24*d5c9a868SElliott Hughes /** 25*d5c9a868SElliott Hughes * raw dos-name coming straight from the directory entry 26*d5c9a868SElliott Hughes * MYFILE TXT 27*d5c9a868SElliott Hughes */ 28*d5c9a868SElliott Hughes struct dos_name_t { 29*d5c9a868SElliott Hughes char base[8] NONULLTERM; 30*d5c9a868SElliott Hughes char ext[3] NONULLTERM; 31*d5c9a868SElliott Hughes char sentinel; 32*d5c9a868SElliott Hughes }; 33*d5c9a868SElliott Hughes 34*d5c9a868SElliott Hughes size_t dos_to_wchar(doscp_t *fromDos, const char *dos, wchar_t *wchar, size_t len); 35*d5c9a868SElliott Hughes void wchar_to_dos(doscp_t *toDos, wchar_t *wchar, char *dos, size_t len, int *mangled); 36*d5c9a868SElliott Hughes 37*d5c9a868SElliott Hughes doscp_t *cp_open(unsigned int codepage); 38*d5c9a868SElliott Hughes void cp_close(doscp_t *cp); 39*d5c9a868SElliott Hughes 40*d5c9a868SElliott Hughes size_t wchar_to_native(const wchar_t *wchar, char *native, 41*d5c9a868SElliott Hughes size_t len, size_t out_len); 42*d5c9a868SElliott Hughes 43*d5c9a868SElliott Hughes #define WCHAR_TO_NATIVE(wchar,native,len) \ 44*d5c9a868SElliott Hughes wchar_to_native((wchar),(native),(len),sizeof(native)) 45*d5c9a868SElliott Hughes 46*d5c9a868SElliott Hughes size_t native_to_wchar(const char *native, wchar_t *wchar, size_t len, 47*d5c9a868SElliott Hughes const char *end, int *mangled); 48*d5c9a868SElliott Hughes 49*d5c9a868SElliott Hughes #endif 50