# SOME DESCRIPTIVE TITLE. # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # # Translators: msgid "" msgstr "" "Project-Id-Version: HexChat\n" "Report-Msgid-Bugs-To: www.hexchat.org\n" "POT-Creation-Date: 2014-05-14 13:20-0400\n" "PO-Revision-Date: 2014-05-14 17:20+0000\n" "Last-Translator: TingPing \n" "Language-Team: Belarusian (http://www.transifex.com/projects/p/hexchat/language/be/)\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Language: be\n" "Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" #: ../data/misc/hexchat.appdata.xml.in.h:1 msgid "" "HexChat is an easy to use yet extensible IRC Client. It allows you to " "securely join multiple networks and talk to users privately or in channels " "using a customizable interface. You can even transfer files." msgstr "" #: ../data/misc/hexchat.appdata.xml.in.h:2 msgid "" "HexChat supports features such as: DCC, SASL, proxies, spellcheck, alerts, " "logging, custom themes, and Python/Perl scripts." msgstr "" #: ../data/misc/hexchat.desktop.in.h:1 msgid "HexChat" msgstr "" #: ../data/misc/hexchat.desktop.in.h:2 msgid "IRC Client" msgstr "" #: ../data/misc/hexchat.desktop.in.h:3 msgid "Chat with other people online" msgstr "" #: ../data/misc/hexchat.desktop.in.h:4 msgid "IM;Chat;" msgstr "" #: ../data/misc/hexchat.desktop.in.h:5 msgid "Open Safe Mode" msgstr "" #: ../data/misc/htm.desktop.in.h:1 msgid "HexChat Theme Manager" msgstr "" #. 0 means unlimited #. STRINGS #: ../src/common/cfgfiles.c:848 msgid "I'm busy" msgstr "Я заняты" #: ../src/common/cfgfiles.c:883 msgid "Leaving" msgstr "Выходжу" #: ../src/common/dcc.c:72 msgid "Waiting" msgstr "Чаканне" #. black #: ../src/common/dcc.c:73 msgid "Active" msgstr "Актыўны" #. cyan #: ../src/common/dcc.c:74 msgid "Failed" msgstr "Памылка" #. red #: ../src/common/dcc.c:75 msgid "Done" msgstr "Выканана" #. green #: ../src/common/dcc.c:76 ../src/fe-gtk/menu.c:968 msgid "Connect" msgstr "Злучэнне" #. black #: ../src/common/dcc.c:77 msgid "Aborted" msgstr "Перарвана" #: ../src/common/dcc.c:1890 ../src/common/outbound.c:2554 #, c-format msgid "Cannot access %s\n" msgstr "Няма доступу да %s\n" #. ! if (osvi.dwMajorVersion >= 5) #. fallback to error number #: ../src/common/dcc.c:1891 ../src/common/text.c:1364 #: ../src/common/text.c:1407 ../src/common/text.c:1418 #: ../src/common/text.c:1425 ../src/common/text.c:1438 #: ../src/common/text.c:1455 ../src/common/text.c:1560 #: ../src/common/util.c:369 msgid "Error" msgstr "Памылка" #: ../src/common/dcc.c:2369 #, c-format msgid "%s is offering \"%s\". Do you want to accept?" msgstr "%s прапануе \"%s\". Вы згодны?" #: ../src/common/dcc.c:2586 msgid "No active DCCs\n" msgstr "Няма актыўных каналаў данніх (DCC)\n" #: ../src/common/hexchat.c:867 msgid "_Open Dialog Window" msgstr "" #: ../src/common/hexchat.c:868 msgid "_Send a File" msgstr "" #: ../src/common/hexchat.c:869 msgid "_User Info (WhoIs)" msgstr "" #: ../src/common/hexchat.c:870 msgid "_Add to Friends List" msgstr "" #: ../src/common/hexchat.c:871 msgid "_Ignore" msgstr "" #: ../src/common/hexchat.c:872 msgid "O_perator Actions" msgstr "" #: ../src/common/hexchat.c:874 msgid "Give Ops" msgstr "Даць аператара" #: ../src/common/hexchat.c:875 msgid "Take Ops" msgstr "Забраць аператара" #: ../src/common/hexchat.c:876 msgid "Give Voice" msgstr "Даць голас" #: ../src/common/hexchat.c:877 msgid "Take Voice" msgstr "Забраць голас" #: ../src/common/hexchat.c:879 msgid "Kick/Ban" msgstr "Выпхнуць/забараніць" #: ../src/common/hexchat.c:880 ../src/common/hexchat.c:917 msgid "Kick" msgstr "Выпхнуць" #: ../src/common/hexchat.c:881 ../src/common/hexchat.c:882 #: ../src/common/hexchat.c:883 ../src/common/hexchat.c:884 #: ../src/common/hexchat.c:885 ../src/common/hexchat.c:916 #: ../src/fe-gtk/banlist.c:50 msgid "Ban" msgstr "Забараніць" #: ../src/common/hexchat.c:886 ../src/common/hexchat.c:887 #: ../src/common/hexchat.c:888 ../src/common/hexchat.c:889 msgid "KickBan" msgstr "Выпхнуць і забараніць" #: ../src/common/hexchat.c:899 msgid "Leave Channel" msgstr "Выйсці з канала" #: ../src/common/hexchat.c:900 msgid "Join Channel..." msgstr "Увайсці на канал..." #: ../src/common/hexchat.c:901 ../src/fe-gtk/menu.c:1410 msgid "Enter Channel to Join:" msgstr "Вызначце канал для ўваходу:" #: ../src/common/hexchat.c:902 msgid "Server Links" msgstr "Спасылкі сервера" #: ../src/common/hexchat.c:903 msgid "Ping Server" msgstr "Пінгаваць сервер" #: ../src/common/hexchat.c:904 msgid "Hide Version" msgstr "Схаваць версію" #: ../src/common/hexchat.c:914 msgid "Op" msgstr "Аператар" #: ../src/common/hexchat.c:915 msgid "DeOp" msgstr "Адабраць аператара" #: ../src/common/hexchat.c:918 msgid "bye" msgstr "пакуль" #: ../src/common/hexchat.c:919 #, c-format msgid "Enter reason to kick %s:" msgstr "Увядзіце прычыну выпіхвання %s:" #: ../src/common/hexchat.c:920 msgid "Sendfile" msgstr "Даслаць файл" #: ../src/common/hexchat.c:921 msgid "Dialog" msgstr "Дыялог" #: ../src/common/hexchat.c:930 msgid "WhoIs" msgstr "Хто ёсць" #: ../src/common/hexchat.c:931 msgid "Send" msgstr "Даслаць" #: ../src/common/hexchat.c:932 msgid "Chat" msgstr "Размова" #: ../src/common/hexchat.c:933 ../src/fe-gtk/banlist.c:852 #: ../src/fe-gtk/dccgui.c:884 ../src/fe-gtk/ignoregui.c:385 #: ../src/fe-gtk/urlgrab.c:212 msgid "Clear" msgstr "Ачысціць" #: ../src/common/hexchat.c:934 msgid "Ping" msgstr "Ping" #: ../src/common/hexchat.c:1130 #, c-format msgid "" "You do not have write access to %s. Nothing from this session can be saved." msgstr "" #: ../src/common/hexchat.c:1139 msgid "" "* Running IRC as root is stupid! You should\n" " create a User Account and use that to login.\n" msgstr "* Выконваць IRC з-пад root'a - глупства.\n Вы павінны стварыць карыстальніцкі\n рахунак у сістэме і ўжываць яго\n" #: ../src/common/ignore.c:130 ../src/common/ignore.c:134 #: ../src/common/ignore.c:138 ../src/common/ignore.c:142 #: ../src/common/ignore.c:146 ../src/common/ignore.c:150 #: ../src/common/ignore.c:154 msgid "YES " msgstr "Так " #: ../src/common/ignore.c:132 ../src/common/ignore.c:136 #: ../src/common/ignore.c:140 ../src/common/ignore.c:144 #: ../src/common/ignore.c:148 ../src/common/ignore.c:152 #: ../src/common/ignore.c:156 msgid "NO " msgstr "Не " #: ../src/common/ignore.c:385 #, c-format msgid "You are being CTCP flooded from %s, ignoring %s\n" msgstr "Вас затапліваюць CTCP запытамі з %s, %s ігнаруецца\n" #: ../src/common/ignore.c:410 #, c-format msgid "You are being MSG flooded from %s, setting gui_autoopen_dialog OFF.\n" msgstr "" #: ../src/common/notify.c:558 #, c-format msgid " %-20s online\n" msgstr " %-20s у сеціве\n" #: ../src/common/notify.c:560 #, c-format msgid " %-20s offline\n" msgstr " %-20s адключаны\n" #: ../src/common/outbound.c:72 msgid "No channel joined. Try /join #\n" msgstr "Не зайшлі на канал. Паспрабуйце /join #\n" #: ../src/common/outbound.c:78 msgid "Not connected. Try /server []\n" msgstr "Няма злучэння. Паспрабуйце /server <вузел> [<порт>]\n" #: ../src/common/outbound.c:280 #, c-format msgid "Server %s already exists on network %s.\n" msgstr "" #: ../src/common/outbound.c:286 #, c-format msgid "Added server %s to network %s.\n" msgstr "" #: ../src/common/outbound.c:371 #, c-format msgid "Already marked away: %s\n" msgstr "Ужо пазначаны адышэдшым: %s\n" #: ../src/common/outbound.c:409 msgid "Already marked back.\n" msgstr "Ужо пазначаны вярнуўшымся.\n" #: ../src/common/outbound.c:1793 msgid "I need /bin/sh to run!\n" msgstr "Для запуску патрэбна праграма /bin/sh !\n" #: ../src/common/outbound.c:2214 msgid "Commands Available:" msgstr "Даступныя каманды:" #: ../src/common/outbound.c:2228 msgid "User defined commands:" msgstr "Вызначаныя карыстальнікам каманды:" #: ../src/common/outbound.c:2244 msgid "Plugin defined commands:" msgstr "Вызначаныя плагінам каманды:" #: ../src/common/outbound.c:2255 msgid "Type /HELP for more information, or /HELP -l" msgstr "Набярыце /HELP <каманда> для даведкі ці /HELP -l" #: ../src/common/outbound.c:2339 #, c-format msgid "Unknown arg '%s' ignored." msgstr "Невядомы аргумент '%s' праігнараваны." #: ../src/common/outbound.c:3093 ../src/common/outbound.c:3123 msgid "Quiet is not supported by this server." msgstr "" #. error #: ../src/common/outbound.c:3585 ../src/common/outbound.c:3619 msgid "No such plugin found.\n" msgstr "Плагін не знойдзены.\n" #: ../src/common/outbound.c:3590 ../src/fe-gtk/plugingui.c:204 msgid "That plugin is refusing to unload.\n" msgstr "Гэты плагін немагчыма выгрузіць.\n" #: ../src/common/outbound.c:3901 msgid "ADDBUTTON , adds a button under the user-list" msgstr "ADDBUTTON <імя> <дзеянне>, дадае кнопку пад спісам карыстальнікаў" #: ../src/common/outbound.c:3902 msgid "" "ADDSERVER , adds a new network with a new " "server to the network list" msgstr "" #: ../src/common/outbound.c:3904 msgid "ALLCHAN , sends a command to all channels you're in" msgstr "ALLCHAN <каманда>, дасылае каманду на ўсе каналы, куды вы зайшлі" #: ../src/common/outbound.c:3906 msgid "ALLCHANL , sends a command to all channels on the current server" msgstr "" #: ../src/common/outbound.c:3908 msgid "ALLSERV , sends a command to all servers you're in" msgstr "ALLSERV <каманда>, дасылае каманду на ўсе серверы, з якімі вы злучаны" #: ../src/common/outbound.c:3909 msgid "AWAY [], sets you away" msgstr "AWAY [<прычына>], усталяваць статус \"адыйшоў\"" #: ../src/common/outbound.c:3910 msgid "BACK, sets you back (not away)" msgstr "BACK, пазначае вас вярнуўшымся (не адышэдшым)" #: ../src/common/outbound.c:3912 msgid "" "BAN [], bans everyone matching the mask from the current " "channel. If they are already on the channel this doesn't kick them (needs " "chanop)" msgstr "BAN <маска> [<тыпзабароны>], забараняе доступ да канала кожнаму, хто адпавядае маске. Калі гэткія карыстальнікі ўжо на канале, яны не будуць выпхнутыя. (Трэба правы аператара)" #: ../src/common/outbound.c:3913 msgid "CHANOPT [-quiet] []" msgstr "" #: ../src/common/outbound.c:3914 msgid "" "CHARSET [], get or set the encoding used for the current " "connection" msgstr "" #: ../src/common/outbound.c:3915 msgid "" "CLEAR [ALL|HISTORY|[-]], Clears the current text window or command " "history" msgstr "" #: ../src/common/outbound.c:3916 msgid "CLOSE [-m], Closes the current window/tab or all queries" msgstr "" #: ../src/common/outbound.c:3919 msgid "COUNTRY [-s] , finds a country code, eg: au = australia" msgstr "COUNTRY [-s] <код|маска>, шукае код краіны, напрыклад: au = australia" #: ../src/common/outbound.c:3921 msgid "" "CTCP , send the CTCP message to nick, common messages are " "VERSION and USERINFO" msgstr "CTCP <мянушка> <паведамленне>, дасылае мянушцы CTCP-паведамленне, напрыклад, VERSION ці USERINFO" #: ../src/common/outbound.c:3923 msgid "" "CYCLE [], parts the current or given channel and immediately " "rejoins" msgstr "" #: ../src/common/outbound.c:3925 msgid "" "\n" "DCC GET - accept an offered file\n" "DCC SEND [-maxcps=#] [file] - send a file to someone\n" "DCC PSEND [-maxcps=#] [file] - send a file using passive mode\n" "DCC LIST - show DCC list\n" "DCC CHAT - offer DCC CHAT to someone\n" "DCC PCHAT - offer DCC CHAT using passive mode\n" "DCC CLOSE example:\n" " /dcc close send johnsmith file.tar.gz" msgstr "\nDCC GET <мянушка> - дазволіць прапанаваны файл\nDCC SEND [-maxcps=#] <мянушка> [файл] - даслаць файл камусьці\nDCC PSEND [-maxcps=#] <мянушка> [файл] - даслаць файл у пасіўным рэжыме\nDCC LIST - паказаць спіс DCC\nDCC CHAT <мянушка> - прапанаваць DCC CHAT камусьці\nDCC PCHAT <мянушка> - прапанаваць DCC CHAT у пасіўным рэжыме\nDCC CLOSE <тып> <мянушка> <файл> напрыклад:\n /dcc close send johnsmith file.tar.gz" #: ../src/common/outbound.c:3937 msgid "" "DEHOP , removes chanhalf-op status from the nick on the current " "channel (needs chanop)" msgstr "DEHOP <мянушка>, выдаляе статус паўаператара ў мянушкі на бягучым канале (патрэбен статус аператара)" #: ../src/common/outbound.c:3939 msgid "DELBUTTON , deletes a button from under the user-list" msgstr "DELBUTTON <імя>, выдаляе кнопку пад спісам карыстальнікаў" #: ../src/common/outbound.c:3941 msgid "" "DEOP , removes chanop status from the nick on the current channel " "(needs chanop)" msgstr "DEOP <мянушка>, выдаляе статус аператара ў мянушкі на бягучым канале (патрэбен статус аператара)" #: ../src/common/outbound.c:3943 msgid "" "DEVOICE , removes voice status from the nick on the current channel " "(needs chanop)" msgstr "DEVOICE <мянушка>, выдаляе права голасу ў мянушкі на бягучым канале (патрэбен статус аператара)" #: ../src/common/outbound.c:3944 msgid "DISCON, Disconnects from server" msgstr "DISCON, Адлучыцца ад сервера" #: ../src/common/outbound.c:3945 msgid "DNS , Resolves an IP or hostname" msgstr "" #: ../src/common/outbound.c:3946 msgid "ECHO , Prints text locally" msgstr "ECHO <тэкст>, Выводзіць тэкст на лакальнай машыне" #: ../src/common/outbound.c:3949 msgid "" "EXEC [-o] , runs the command. If -o flag is used then output is " "sent to current channel, else is printed to current text box" msgstr "EXEC [-o] <каманда>, запускае каманду. Калі ўжыты параметр -o, вывад будзе дасланы ў бягучы канал, інакш у бягучае тэкставае акно" #: ../src/common/outbound.c:3951 msgid "EXECCONT, sends the process SIGCONT" msgstr "EXECCONT, дасылае працэсу сігнал SIGCONT" #: ../src/common/outbound.c:3954 msgid "" "EXECKILL [-9], kills a running exec in the current session. If -9 is given " "the process is SIGKILL'ed" msgstr "EXECKILL [-9], забівае выконваючуюся каманду ў бягучай сесіі. Калі адзначаны флаг -9, працэсу дасылается сігнал SIGKILL" #: ../src/common/outbound.c:3956 msgid "EXECSTOP, sends the process SIGSTOP" msgstr "EXECSTOP, дасылае працэсу сігнал SIGSTOP" #: ../src/common/outbound.c:3957 msgid "EXECWRITE, sends data to the processes stdin" msgstr "EXECWRITE, дасылае данні на стандартны ўваход працэса (stdin)" #: ../src/common/outbound.c:3961 msgid "EXPORTCONF, exports HexChat settings" msgstr "" #: ../src/common/outbound.c:3964 msgid "FLUSHQ, flushes the current server's send queue" msgstr "FLUSHQ, скінуць чаргу дасылкі на бягучы сервер" #: ../src/common/outbound.c:3966 msgid "GATE [], proxies through a host, port defaults to 23" msgstr "GATE <вузел> [<порт>], далучыцца праз вузел, прадвызначаны порт 23" #: ../src/common/outbound.c:3971 msgid "GHOST [password], Kills a ghosted nickname" msgstr "" #: ../src/common/outbound.c:3976 msgid "HOP , gives chanhalf-op status to the nick (needs chanop)" msgstr "HOP <мянушка>, даць правы паў-аператара карыстальніку (патрэбна мець правы аператара)" #: ../src/common/outbound.c:3977 msgid "ID , identifies yourself to nickserv" msgstr "ID <пароль>, ідэнтыфікаваць сябе nickserv" #: ../src/common/outbound.c:3979 msgid "" "IGNORE \n" " mask - host mask to ignore, eg: *!*@*.aol.com\n" " types - types of data to ignore, one or all of:\n" " PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n" " options - NOSAVE, QUIET" msgstr "IGNORE <маска> <тыпы..> <уласцівасці..>\n маска - маска для ігнаравання, напрыклад: *!*@*.aol.com\n тыпы - тыпы дадзеных для ігнаравання:\n PRIV, CHAN, NOTI, CTCP, DCC, INVI, ALL\n уласцівасці - NOSAVE, QUIET" #: ../src/common/outbound.c:3986 msgid "" "INVITE [], invites someone to a channel, by default the " "current channel (needs chanop)" msgstr "INVITE <мянушка> [<канал>], запрасіць кагосьці на канал, калі назва канала не пазначана - на бягучы канал (патрэбен статус аператара)" #: ../src/common/outbound.c:3987 msgid "JOIN , joins the channel" msgstr "JOIN <канал>, увайсці на канал" #: ../src/common/outbound.c:3989 msgid "" "KICK [reason], kicks the nick from the current channel (needs chanop)" msgstr "" #: ../src/common/outbound.c:3991 msgid "" "KICKBAN [reason], bans then kicks the nick from the current channel " "(needs chanop)" msgstr "" #: ../src/common/outbound.c:3994 msgid "LAGCHECK, forces a new lag check" msgstr "LAGCHECK, выканаць праверку сігнала" #: ../src/common/outbound.c:3996 msgid "" "LASTLOG [-h] [-m] [-r] [--] , searches for a string in the buffer\n" " Use -h to highlight the found string(s)\n" " Use -m to match case\n" " Use -r when string is a Regular Expression\n" " Use -- (double hyphen) to end options when searching for, say, the string '-r'" msgstr "" #: ../src/common/outbound.c:4002 msgid "LOAD [-e] , loads a plugin or script" msgstr "LOAD [-e] <файл>, загрузіць плагін ці скрыпт" #: ../src/common/outbound.c:4005 msgid "" "MDEHOP, Mass deop's all chanhalf-ops in the current channel (needs chanop)" msgstr "MDEHOP, Адабраць паў-аператара ва ўсіх карыстальнікаў бягучага канала (патрэбен статус аператара)" #: ../src/common/outbound.c:4007 msgid "MDEOP, Mass deop's all chanops in the current channel (needs chanop)" msgstr "MDEOP, Адабраць аператара ва ўсіх карыстальнікаў бягучага канала (патрабуе статус аператара)" #: ../src/common/outbound.c:4009 msgid "" "ME , sends the action to the current channel (actions are written in" " the 3rd person, like /me jumps)" msgstr "ME <дзеянне>, дасылае дзеянне на бягучы канал (дзеянні пішуцца ад трэцяй асобы, напрыклад, /me скача)" #: ../src/common/outbound.c:4013 msgid "" "MKICK, Mass kicks everyone except you in the current channel (needs chanop)" msgstr "MKICK, Выпхнуць усіх карыстальнікаў з бягучага канала, акрамя вас (патрэбен статус аператара)" #: ../src/common/outbound.c:4016 msgid "MOP, Mass op's all users in the current channel (needs chanop)" msgstr "MOP, Надаць усім карыстальнікам бягучага канала статус аператара (патрэбен статус аператара)" #: ../src/common/outbound.c:4017 msgid "" "MSG , sends a private message, message \".\" to send to last" " nick or prefix with \"=\" for dcc chat" msgstr "" #: ../src/common/outbound.c:4020 msgid "NAMES [channel], Lists the nicks on the channel" msgstr "" #: ../src/common/outbound.c:4022 msgid "NCTCP , Sends a CTCP notice" msgstr "NCTCP <мянушка> <паведамленне>, Дасылае CTCP-абвяшчэнне" #: ../src/common/outbound.c:4023 msgid "NEWSERVER [-noconnect] []" msgstr "NEWSERVER [-noconnect] []" #: ../src/common/outbound.c:4024 msgid "NICK , sets your nick" msgstr "NICK <мянушка>, змяняе вашую мянушку" #: ../src/common/outbound.c:4027 msgid "NOTICE , sends a notice" msgstr "" #: ../src/common/outbound.c:4029 msgid "" "NOTIFY [-n network1[,network2,...]] [], displays your notify list or " "adds someone to it" msgstr "NOTIFY [-n сеціва1[,сеціва2]] [<мянушка>], пералічвае ваш спіс абвяшчэнняў ці дадае некага ў яго" #: ../src/common/outbound.c:4031 msgid "OP , gives chanop status to the nick (needs chanop)" msgstr "OP , дае мянушцы статус аператара канала (патрэбен статус аператара)" #: ../src/common/outbound.c:4033 msgid "" "PART [] [], leaves the channel, by default the current one" msgstr "PART [<канал>] [<прычына>], выйсці з канала, калі канал не вызначаны, то з бягучага" #: ../src/common/outbound.c:4035 msgid "PING , CTCP pings nick or channel" msgstr "PING <мянушка | канал>, CTCP пінг мянушкі ці канала" #: ../src/common/outbound.c:4037 msgid "" "QUERY [-nofocus] [message], opens up a new privmsg window to someone " "and optionally sends a message" msgstr "" #: ../src/common/outbound.c:4039 msgid "" "QUIET [], quiet everyone matching the mask in the current " "channel if supported by the server." msgstr "" #: ../src/common/outbound.c:4041 msgid "QUIT [], disconnects from the current server" msgstr "QUIT [<прычына>], адлучыцца ад бягучага сервера" #: ../src/common/outbound.c:4043 msgid "QUOTE , sends the text in raw form to the server" msgstr "QUOTE <тэкст>, даслаць тэкст у неапрацованай форме да сервера" #: ../src/common/outbound.c:4046 msgid "" "RECONNECT [-ssl] [] [] [], Can be called just as " "/RECONNECT to reconnect to the current server or with /RECONNECT ALL to " "reconnect to all the open servers" msgstr "RECONNECT [-ssl] [<вузел>] [<порт>] [<пароль>], Можа быць выклікана як /RECONNECT для перадалучэння да бягучага сервера ці /RECONNECT ALL для перадалучэння да ўсіх адкрытых сервераў" #: ../src/common/outbound.c:4049 msgid "" "RECONNECT [] [] [], Can be called just as /RECONNECT " "to reconnect to the current server or with /RECONNECT ALL to reconnect to " "all the open servers" msgstr "RECONNECT [-ssl] [<вузел>] [<порт>] [<пароль>], Можа быць выклікана як /RECONNECT для перадалучэння да бягучага сервера ці /RECONNECT ALL для перадалучэння да ўсіх адкрытых сервераў" #: ../src/common/outbound.c:4051 msgid "" "RECV , send raw data to HexChat, as if it was received from the IRC " "server" msgstr "" #: ../src/common/outbound.c:4052 msgid "RELOAD , reloads a plugin or script" msgstr "" #: ../src/common/outbound.c:4054 msgid "SAY , sends the text to the object in the current window" msgstr "SAY <тэкст>, дасылае тэкст аб'екту ў бягучым акне" #: ../src/common/outbound.c:4055 msgid "SEND []" msgstr "SEND []" #: ../src/common/outbound.c:4058 msgid "SERVCHAN [-ssl] , connects and joins a channel" msgstr "SERVCHAN [-ssl] <вузел> <порт> <канал>, злучыцца і ўвайсці на канал" #: ../src/common/outbound.c:4061 msgid "SERVCHAN , connects and joins a channel" msgstr "SERVCHAN <вузел> <порт> <канал>, злучыцца і ўвайсці на канал" #: ../src/common/outbound.c:4065 msgid "" "SERVER [-ssl] [] [], connects to a server, the " "default port is 6667 for normal connections, and 6697 for ssl connections" msgstr "" #: ../src/common/outbound.c:4068 msgid "" "SERVER [] [], connects to a server, the default port " "is 6667" msgstr "SERVER <вузел> [<порт>] [<пароль>], злучыцца з серверам, прадвызначаны порт 6667" #: ../src/common/outbound.c:4070 msgid "SET [-e] [-off|-on] [-quiet] []" msgstr "" #: ../src/common/outbound.c:4071 msgid "SETCURSOR [-|+], reposition the cursor in the inputbox" msgstr "" #: ../src/common/outbound.c:4072 msgid "SETTAB , change a tab's name, tab_trunc limit still applies" msgstr "" #: ../src/common/outbound.c:4073 msgid "SETTEXT , replace the text in the input box" msgstr "" #: ../src/common/outbound.c:4076 msgid "" "TOPIC [], sets the topic if one is given, else shows the current " "topic" msgstr "TOPIC [<тэма>], усталяваць тэму, калі яна вызначана, інакш вывесці бягучую тэму" #: ../src/common/outbound.c:4078 msgid "" "\n" "TRAY -f [] Blink tray between two icons.\n" "TRAY -f Set tray to a fixed icon.\n" "TRAY -i Blink tray with an internal icon.\n" "TRAY -t Set the tray tooltip.\n" "TRAY -b <text> Set the tray balloon." msgstr "\nTRAY -f <timeout> <file1> [<file2>] Мірганне ў сподку між двума значкамі.\nTRAY -f <filename> Замацаваць значку ў сподкавым элеменце.\nTRAY -i <number> Мірганне ў сподку ўнутранай значкай.\nTRAY -t <text> Усталяваць тэкст сподкавага элемента.\nTRAY -b <title> <text> Усталяваць выплыўны тэкст сподкавага элемента." #: ../src/common/outbound.c:4085 msgid "UNBAN <mask> [<mask>...], unbans the specified masks." msgstr "UNBAN <маска> [<маска>...], зняць забарону з вызначаных масак." #: ../src/common/outbound.c:4086 msgid "UNIGNORE <mask> [QUIET]" msgstr "UNIGNORE <mask> [QUIET]" #: ../src/common/outbound.c:4087 msgid "UNLOAD <name>, unloads a plugin or script" msgstr "UNLOAD <імя>, выгрузіць плагін ці скрыпт" #: ../src/common/outbound.c:4089 msgid "" "UNQUIET <mask> [<mask>...], unquiets the specified masks if supported by the" " server." msgstr "" #: ../src/common/outbound.c:4090 msgid "URL <url>, opens a URL in your browser" msgstr "URL <url>, адкрыць URL у вашым браўзеры" #: ../src/common/outbound.c:4092 msgid "" "USELECT [-a] [-s] <nick1> <nick2> etc, highlights nick(s) in channel " "userlist" msgstr "USELECT [-a] [-s] <мянушка1> <мянушка2> і г.д., падсвечваць вызначаную(ыя) мянушку(і) ў спісе карыстальнікаў" #: ../src/common/outbound.c:4095 msgid "VOICE <nick>, gives voice status to someone (needs chanop)" msgstr "VOICE <мянушка>, даць голас камусьці (патрэбен статус аператара канала)" #: ../src/common/outbound.c:4097 msgid "WALLCHAN <message>, writes the message to all channels" msgstr "WALLCHAN <паведамленне>, напісаць паведамленне ва ўсіх каналах" #: ../src/common/outbound.c:4099 msgid "" "WALLCHOP <message>, sends the message to all chanops on the current channel" msgstr "WALLCHOP <паведамленне>, даслаць паведамленне ўсім аператарам бягучага канала" #: ../src/common/outbound.c:4132 #, c-format msgid "User Command for: %s\n" msgstr "" #: ../src/common/outbound.c:4159 #, c-format msgid "Usage: %s\n" msgstr "Карыстанне: %s\n" #: ../src/common/outbound.c:4164 msgid "" "\n" "No help available on that command.\n" msgstr "\nНіякай даведкі не існуе для гэтай каманды.\n" #: ../src/common/outbound.c:4170 msgid "No such command.\n" msgstr "Няма гэткай каманды.\n" #: ../src/common/outbound.c:4506 msgid "Bad arguments for user command.\n" msgstr "Дрэнныя аргументы карыстальніцкай каманды.\n" #: ../src/common/outbound.c:4720 msgid "Too many recursive usercommands, aborting." msgstr "Зашмат рэкурсіўных падкаманд, перарываюся." #: ../src/common/outbound.c:4825 msgid "Unknown Command. Try /help\n" msgstr "Невядомая каманда. Паспрабуйце /help\n" #: ../src/common/plugin.c:412 ../src/common/plugin.c:448 msgid "No hexchat_plugin_init symbol; is this really a HexChat plugin?" msgstr "" #: ../src/common/server.c:644 msgid "Are you sure this is a SSL capable server and port?\n" msgstr "Ці вы ўпэўнены, што гэта сумяшчальны з SSL сервер і порт?\n" #: ../src/common/server.c:1012 #, c-format msgid "" "Cannot resolve hostname %s\n" "Check your IP Settings!\n" msgstr "Немагчыма знайсці імя %s\nПраверце вашыя наладкі IP!\n" #: ../src/common/server.c:1017 msgid "Proxy traversal failed.\n" msgstr "Не атрымліваецца злучыцца з проксі.\n" #: ../src/common/servlist.c:762 #, c-format msgid "Cycling to next server in %s...\n" msgstr "Спрабую іншы сервер %s...\n" #: ../src/common/servlist.c:1404 #, c-format msgid "" "Warning: \"%s\" character set is unknown. No conversion will be applied for " "network %s." msgstr "Увага: \"%s\" знаказбор невядомы. Ніякага пераўтварэння знакаў для сеціва %s не будзе." #: ../src/common/textevents.h:6 msgid "%C18*%O$t%C18$1%O added to notify list." msgstr "" #: ../src/common/textevents.h:9 msgid "%C22*%O$t%C22$1%O: %C18$2%O on %C24$4%O by %C26$3%O" msgstr "" #: ../src/common/textevents.h:12 msgid "%C22*%O$tCannot join %C22$1 %O(%C20You are banned%O)." msgstr "" #: ../src/common/textevents.h:18 msgid "%C29*%O$tCapabilities acknowledged: %C29$2%O" msgstr "" #: ../src/common/textevents.h:21 msgid "%C23*%O$tCapabilities supported: %C29$2%O" msgstr "" #: ../src/common/textevents.h:24 msgid "%C23*%O$tCapabilities requested: %C29$1%O" msgstr "" #: ../src/common/textevents.h:27 msgid "%C24*%O$t%C28$1%O is now known as %C18$2%O" msgstr "" #: ../src/common/textevents.h:36 msgid "%C22*%O$t%C26$1%O sets ban on %C18$2%O" msgstr "" #: ../src/common/textevents.h:39 msgid "%C22*%O$tChannel %C22$1%O created on %C24$2%O" msgstr "" #: ../src/common/textevents.h:42 msgid "%C22*%O$t%C26$1%O removes channel half-operator status from %C18$2%O" msgstr "" #: ../src/common/textevents.h:45 msgid "%C22*%O$t%C26$1%O removes channel operator status from %C18$2%O" msgstr "" #: ../src/common/textevents.h:48 msgid "%C22*%O$t%C26$1%O removes voice from %C18$2%O" msgstr "" #: ../src/common/textevents.h:51 msgid "%C22*%O$t%C26$1%C sets exempt on %C18$2%O" msgstr "" #: .<style>pre { line-height: 125%; } td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */</style><div class="highlight"><pre><span></span><span class="cm">/*</span> <span class="cm"> * dirent.h - dirent API for Microsoft Visual Studio</span> <span class="cm"> *</span> <span class="cm"> * Copyright (C) 2006-2012 Toni Ronkko</span> <span class="cm"> *</span> <span class="cm"> * Permission is hereby granted, free of charge, to any person obtaining</span> <span class="cm"> * a copy of this software and associated documentation files (the</span> <span class="cm"> * ``Software''), to deal in the Software without restriction, including</span> <span class="cm"> * without limitation the rights to use, copy, modify, merge, publish,</span> <span class="cm"> * distribute, sublicense, and/or sell copies of the Software, and to</span> <span class="cm"> * permit persons to whom the Software is furnished to do so, subject to</span> <span class="cm"> * the following conditions:</span> <span class="cm"> *</span> <span class="cm"> * The above copyright notice and this permission notice shall be included</span> <span class="cm"> * in all copies or substantial portions of the Software.</span> <span class="cm"> *</span> <span class="cm"> * THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS</span> <span class="cm"> * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span> <span class="cm"> * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span> <span class="cm"> * IN NO EVENT SHALL TONI RONKKO BE LIABLE FOR ANY CLAIM, DAMAGES OR</span> <span class="cm"> * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span> <span class="cm"> * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span> <span class="cm"> * OTHER DEALINGS IN THE SOFTWARE.</span> <span class="cm"> *</span> <span class="cm"> *</span> <span class="cm"> * Version 1.13, Dec 12 2012, Toni Ronkko</span> <span class="cm"> * Use traditional 8+3 file name if the name cannot be represented in the</span> <span class="cm"> * default ANSI code page. Now compiles again with MSVC 6.0. Thanks to</span> <span class="cm"> * Konstantin Khomoutov for testing.</span> <span class="cm"> *</span> <span class="cm"> * Version 1.12.1, Oct 1 2012, Toni Ronkko</span> <span class="cm"> * Bug fix: renamed wide-character DIR structure _wDIR to _WDIR (with</span> <span class="cm"> * capital W) in order to maintain compatibility with MingW.</span> <span class="cm"> *</span> <span class="cm"> * Version 1.12, Sep 30 2012, Toni Ronkko</span> <span class="cm"> * Define PATH_MAX and NAME_MAX. Added wide-character variants _wDIR, </span> <span class="cm"> * _wdirent, _wopendir(), _wreaddir(), _wclosedir() and _wrewinddir().</span> <span class="cm"> * Thanks to Edgar Buerkle and Jan Nijtmans for ideas and code.</span> <span class="cm"> *</span> <span class="cm"> * Do not include windows.h. This allows dirent.h to be integrated more</span> <span class="cm"> * easily into programs using winsock. Thanks to Fernando Azaldegui.</span> <span class="cm"> *</span> <span class="cm"> * Version 1.11, Mar 15, 2011, Toni Ronkko</span> <span class="cm"> * Defined FILE_ATTRIBUTE_DEVICE for MSVC 6.0.</span> <span class="cm"> *</span> <span class="cm"> * Version 1.10, Aug 11, 2010, Toni Ronkko</span> <span class="cm"> * Added d_type and d_namlen fields to dirent structure. The former is</span> <span class="cm"> * especially useful for determining whether directory entry represents a</span> <span class="cm"> * file or a directory. For more information, see</span> <span class="cm"> * http://www.delorie.com/gnu/docs/glibc/libc_270.html</span> <span class="cm"> *</span> <span class="cm"> * Improved conformance to the standards. For example, errno is now set</span> <span class="cm"> * properly on failure and assert() is never used. Thanks to Peter Brockam</span> <span class="cm"> * for suggestions.</span> <span class="cm"> *</span> <span class="cm"> * Fixed a bug in rewinddir(): when using relative directory names, change</span> <span class="cm"> * of working directory no longer causes rewinddir() to fail.</span> <span class="cm"> *</span> <span class="cm"> * Version 1.9, Dec 15, 2009, John Cunningham</span> <span class="cm"> * Added rewinddir member function</span> <span class="cm"> *</span> <span class="cm"> * Version 1.8, Jan 18, 2008, Toni Ronkko</span> <span class="cm"> * Using FindFirstFileA and WIN32_FIND_DATAA to avoid converting string</span> <span class="cm"> * between multi-byte and unicode representations. This makes the</span> <span class="cm"> * code simpler and also allows the code to be compiled under MingW. Thanks</span> <span class="cm"> * to Azriel Fasten for the suggestion.</span> <span class="cm"> *</span> <span class="cm"> * Mar 4, 2007, Toni Ronkko</span> <span class="cm"> * Bug fix: due to the strncpy_s() function this file only compiled in</span> <span class="cm"> * Visual Studio 2005. Using the new string functions only when the</span> <span class="cm"> * compiler version allows.</span> <span class="cm"> *</span> <span class="cm"> * Nov 2, 2006, Toni Ronkko</span> <span class="cm"> * Major update: removed support for Watcom C, MS-DOS and Turbo C to</span> <span class="cm"> * simplify the file, updated the code to compile cleanly on Visual</span> <span class="cm"> * Studio 2005 with both unicode and multi-byte character strings,</span> <span class="cm"> * removed rewinddir() as it had a bug.</span> <span class="cm"> *</span> <span class="cm"> * Aug 20, 2006, Toni Ronkko</span> <span class="cm"> * Removed all remarks about MSVC 1.0, which is antiqued now. Simplified</span> <span class="cm"> * comments by removing SGML tags.</span> <span class="cm"> *</span> <span class="cm"> * May 14 2002, Toni Ronkko</span> <span class="cm"> * Embedded the function definitions directly to the header so that no</span> <span class="cm"> * source modules need to be included in the Visual Studio project. Removed</span> <span class="cm"> * all the dependencies to other projects so that this header file can be</span> <span class="cm"> * used independently.</span> <span class="cm"> *</span> <span class="cm"> * May 28 1998, Toni Ronkko</span> <span class="cm"> * First version.</span> <span class="cm"> *****************************************************************************/</span> <span class="cp">#ifndef DIRENT_H</span> <span class="cp">#define DIRENT_H</span> <span class="cp">#if !defined(_68K_) && !defined(_MPPC_) && !defined(_X86_) && !defined(_IA64_) && !defined(_AMD64_) && defined(_M_IX86)</span> <span class="cp"># define _X86_</span> <span class="cp">#endif</span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdio.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdarg.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><windef.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><winbase.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><wchar.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><string.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><stdlib.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><malloc.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/types.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><sys/stat.h></span> <span class="cp">#include</span><span class="w"> </span><span class="cpf"><errno.h></span> <span class="cm">/* Indicates that d_type field is available in dirent structure */</span> <span class="cp">#define _DIRENT_HAVE_D_TYPE</span> <span class="cm">/* Indicates that d_namlen field is available in dirent structure */</span> <span class="cp">#define _DIRENT_HAVE_D_NAMLEN</span> <span class="cm">/* Entries missing from MSVC 6.0 */</span> <span class="cp">#if !defined(FILE_ATTRIBUTE_DEVICE)</span> <span class="cp"># define FILE_ATTRIBUTE_DEVICE 0x40</span> <span class="cp">#endif</span> <span class="cm">/* File type and permission flags for stat() */</span> <span class="cp">#if !defined(S_IFMT)</span> <span class="cp"># define S_IFMT _S_IFMT </span><span class="cm">/* File type mask */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IFDIR)</span> <span class="cp"># define S_IFDIR _S_IFDIR </span><span class="cm">/* Directory */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IFCHR)</span> <span class="cp"># define S_IFCHR _S_IFCHR </span><span class="cm">/* Character device */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IFFIFO)</span> <span class="cp"># define S_IFFIFO _S_IFFIFO </span><span class="cm">/* Pipe */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IFREG)</span> <span class="cp"># define S_IFREG _S_IFREG </span><span class="cm">/* Regular file */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IREAD)</span> <span class="cp"># define S_IREAD _S_IREAD </span><span class="cm">/* Read permission */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IWRITE)</span> <span class="cp"># define S_IWRITE _S_IWRITE </span><span class="cm">/* Write permission */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IEXEC)</span> <span class="cp"># define S_IEXEC _S_IEXEC </span><span class="cm">/* Execute permission */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IFIFO)</span> <span class="cp"># define S_IFIFO _S_IFIFO </span><span class="cm">/* Pipe */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IFBLK)</span> <span class="cp"># define S_IFBLK 0 </span><span class="cm">/* Block device */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IFLNK)</span> <span class="cp"># define S_IFLNK 0 </span><span class="cm">/* Link */</span> <span class="cp">#endif</span> <span class="cp">#if !defined(S_IFSOCK)</span> <span class="cp"># define S_IFSOCK 0 </span><span class="cm">/* Socket */</span> <span class="cp">#endif</span> <span class="cp">#if defined(_MSC_VER)</span> <span class="cp"># define S_IRUSR S_IREAD </span><span class="cm">/* Read user */</span> <span class="cp"># define S_IWUSR S_IWRITE </span><span class="cm">/* Write user */</span> <span class="cp"># define S_IXUSR 0 </span><span class="cm">/* Execute user */</span> <span class="cp"># define S_IRGRP 0 </span><span class="cm">/* Read group */</span> <span class="cp"># define S_IWGRP 0 </span><span class="cm">/* Write group */</span> <span class="cp"># define S_IXGRP 0 </span><span class="cm">/* Execute group */</span> <span class="cp"># define S_IROTH 0 </span><span class="cm">/* Read others */</span> <span class="cp"># define S_IWOTH 0 </span><span class="cm">/* Write others */</span> <span class="cp"># define S_IXOTH 0 </span><span class="cm">/* Execute others */</span> <span class="cp">#endif</span> <span class="cm">/* Maximum length of file name */</span> <span class="cp">#if !defined(PATH_MAX)</span> <span class="cp"># define PATH_MAX MAX_PATH</span> <span class="cp">#endif</span> <span class="cp">#if !defined(FILENAME_MAX)</span> <span class="cp"># define FILENAME_MAX MAX_PATH</span> <span class="cp">#endif</span> <span class="cp">#if !defined(NAME_MAX)</span> <span class="cp"># define NAME_MAX FILENAME_MAX</span> <span class="cp">#endif</span> <span class="cm">/* File type flags for d_type */</span> <span class="cp">#define DT_UNKNOWN 0</span> <span class="cp">#define DT_REG S_IFREG</span> <span class="cp">#define DT_DIR S_IFDIR</span> <span class="cp">#define DT_FIFO S_IFIFO</span> <span class="cp">#define DT_SOCK S_IFSOCK</span> <span class="cp">#define DT_CHR S_IFCHR</span> <span class="cp">#define DT_BLK S_IFBLK</span> <span class="cm">/* Macros for converting between st_mode and d_type */</span> <span class="cp">#define IFTODT(mode) ((mode) & S_IFMT)</span> <span class="cp">#define DTTOIF(type) (type)</span> <span class="cm">/*</span> <span class="cm"> * File type macros. Note that block devices, sockets and links cannot be</span> <span class="cm"> * distinguished on Windows and the macros S_ISBLK, S_ISSOCK and S_ISLNK are</span> <span class="cm"> * only defined for compatibility. These macros should always return false</span> <span class="cm"> * on Windows.</span> <span class="cm"> */</span> <span class="cp">#define S_ISFIFO(mode) (((mode) & S_IFMT) == S_IFIFO)</span> <span class="cp">#define S_ISDIR(mode) (((mode) & S_IFMT) == S_IFDIR)</span> <span class="cp">#define S_ISREG(mode) (((mode) & S_IFMT) == S_IFREG)</span> <span class="cp">#define S_ISLNK(mode) (((mode) & S_IFMT) == S_IFLNK)</span> <span class="cp">#define S_ISSOCK(mode) (((mode) & S_IFMT) == S_IFSOCK)</span> <span class="cp">#define S_ISCHR(mode) (((mode) & S_IFMT) == S_IFCHR)</span> <span class="cp">#define S_ISBLK(mode) (((mode) & S_IFMT) == S_IFBLK)</span> <span class="cm">/* Return the exact length of d_namlen without zero terminator */</span> <span class="cp">#define _D_EXACT_NAMLEN(p) ((p)->d_namlen)</span> <span class="cm">/* Return number of bytes needed to store d_namlen */</span> <span class="cp">#define _D_ALLOC_NAMLEN(p) (PATH_MAX + 1)</span> <span class="cp">#ifdef __cplusplus</span> <span class="k">extern</span><span class="w"> </span><span class="s">"C"</span><span class="w"> </span><span class="p">{</span> <span class="cp">#endif</span> <span class="cm">/* Wide-character version */</span> <span class="k">struct</span><span class="w"> </span><span class="nc">_wdirent</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">d_ino</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Always zero */</span> <span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">d_reclen</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Structure size */</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">d_namlen</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Length of name without \0 */</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">d_type</span><span class="p">;</span><span class="w"> </span><span class="cm">/* File type */</span> <span class="w"> </span><span class="kt">wchar_t</span><span class="w"> </span><span class="n">d_name</span><span class="p">[</span><span class="n">PATH_MAX</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span><span class="w"> </span><span class="cm">/* File name */</span> <span class="p">};</span> <span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">_wdirent</span><span class="w"> </span><span class="n">_wdirent</span><span class="p">;</span> <span class="k">struct</span><span class="w"> </span><span class="nc">_WDIR</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">_wdirent</span><span class="w"> </span><span class="n">ent</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Current directory entry */</span> <span class="w"> </span><span class="n">WIN32_FIND_DATAW</span><span class="w"> </span><span class="n">data</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Private file data */</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">cached</span><span class="p">;</span><span class="w"> </span><span class="cm">/* True if data is valid */</span> <span class="w"> </span><span class="n">HANDLE</span><span class="w"> </span><span class="n">handle</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Win32 search handle */</span> <span class="w"> </span><span class="kt">wchar_t</span><span class="w"> </span><span class="o">*</span><span class="n">patt</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Initial directory name */</span> <span class="p">};</span> <span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">_WDIR</span><span class="w"> </span><span class="n">_WDIR</span><span class="p">;</span> <span class="k">static</span><span class="w"> </span><span class="n">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="nf">_wopendir</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">wchar_t</span><span class="w"> </span><span class="o">*</span><span class="n">dirname</span><span class="p">);</span> <span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">_wdirent</span><span class="w"> </span><span class="o">*</span><span class="n">_wreaddir</span><span class="w"> </span><span class="p">(</span><span class="n">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">);</span> <span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">_wclosedir</span><span class="w"> </span><span class="p">(</span><span class="n">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">);</span> <span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">_wrewinddir</span><span class="w"> </span><span class="p">(</span><span class="n">_WDIR</span><span class="o">*</span><span class="w"> </span><span class="n">dirp</span><span class="p">);</span> <span class="cm">/* For compatibility with Symbian */</span> <span class="cp">#define wdirent _wdirent</span> <span class="cp">#define WDIR _WDIR</span> <span class="cp">#define wopendir _wopendir</span> <span class="cp">#define wreaddir _wreaddir</span> <span class="cp">#define wclosedir _wclosedir</span> <span class="cp">#define wrewinddir _wrewinddir</span> <span class="cm">/* Multi-byte character versions */</span> <span class="k">struct</span><span class="w"> </span><span class="nc">dirent</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kt">long</span><span class="w"> </span><span class="n">d_ino</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Always zero */</span> <span class="w"> </span><span class="kt">unsigned</span><span class="w"> </span><span class="kt">short</span><span class="w"> </span><span class="n">d_reclen</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Structure size */</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">d_namlen</span><span class="p">;</span><span class="w"> </span><span class="cm">/* Length of name without \0 */</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">d_type</span><span class="p">;</span><span class="w"> </span><span class="cm">/* File type */</span> <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="n">d_name</span><span class="p">[</span><span class="n">PATH_MAX</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span><span class="w"> </span><span class="cm">/* File name */</span> <span class="p">};</span> <span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">dirent</span><span class="w"> </span><span class="n">dirent</span><span class="p">;</span> <span class="k">struct</span><span class="w"> </span><span class="nc">DIR</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">dirent</span><span class="w"> </span><span class="n">ent</span><span class="p">;</span> <span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="n">wdirp</span><span class="p">;</span> <span class="p">};</span> <span class="k">typedef</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">DIR</span><span class="w"> </span><span class="kt">DIR</span><span class="p">;</span> <span class="k">static</span><span class="w"> </span><span class="kt">DIR</span><span class="w"> </span><span class="o">*</span><span class="nf">opendir</span><span class="w"> </span><span class="p">(</span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">dirname</span><span class="p">);</span> <span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">dirent</span><span class="w"> </span><span class="o">*</span><span class="n">readdir</span><span class="w"> </span><span class="p">(</span><span class="kt">DIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">);</span> <span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">closedir</span><span class="w"> </span><span class="p">(</span><span class="kt">DIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">);</span> <span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">rewinddir</span><span class="w"> </span><span class="p">(</span><span class="kt">DIR</span><span class="o">*</span><span class="w"> </span><span class="n">dirp</span><span class="p">);</span> <span class="cm">/* Internal utility functions */</span> <span class="k">static</span><span class="w"> </span><span class="n">WIN32_FIND_DATAW</span><span class="w"> </span><span class="o">*</span><span class="nf">dirent_first</span><span class="w"> </span><span class="p">(</span><span class="n">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">);</span> <span class="k">static</span><span class="w"> </span><span class="n">WIN32_FIND_DATAW</span><span class="w"> </span><span class="o">*</span><span class="nf">dirent_next</span><span class="w"> </span><span class="p">(</span><span class="n">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">);</span> <span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">dirent_mbstowcs_s</span><span class="p">(</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="o">*</span><span class="n">pReturnValue</span><span class="p">,</span> <span class="w"> </span><span class="kt">wchar_t</span><span class="w"> </span><span class="o">*</span><span class="n">wcstr</span><span class="p">,</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">sizeInWords</span><span class="p">,</span> <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">mbstr</span><span class="p">,</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">count</span><span class="p">);</span> <span class="k">static</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="nf">dirent_wcstombs_s</span><span class="p">(</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="o">*</span><span class="n">pReturnValue</span><span class="p">,</span> <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">mbstr</span><span class="p">,</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">sizeInBytes</span><span class="p">,</span> <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">wchar_t</span><span class="w"> </span><span class="o">*</span><span class="n">wcstr</span><span class="p">,</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">count</span><span class="p">);</span> <span class="k">static</span><span class="w"> </span><span class="kt">void</span><span class="w"> </span><span class="nf">dirent_set_errno</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">error</span><span class="p">);</span> <span class="cm">/*</span> <span class="cm"> * Open directory stream DIRNAME for read and return a pointer to the</span> <span class="cm"> * internal working area that is used to retrieve individual directory</span> <span class="cm"> * entries.</span> <span class="cm"> */</span> <span class="k">static</span><span class="w"> </span><span class="n">_WDIR</span><span class="o">*</span> <span class="nf">_wopendir</span><span class="p">(</span> <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">wchar_t</span><span class="w"> </span><span class="o">*</span><span class="n">dirname</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="n">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">error</span><span class="p">;</span> <span class="w"> </span><span class="n">DWORD</span><span class="w"> </span><span class="n">n</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Must have directory name */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirname</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nb">NULL</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">dirname</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">dirent_set_errno</span><span class="w"> </span><span class="p">(</span><span class="n">ENOENT</span><span class="p">);</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Allocate new _WDIR structure */</span> <span class="w"> </span><span class="n">dirp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">_WDIR</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="n">g_new</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">_WDIR</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span> <span class="w"> </span><span class="cm">/* Reset _WDIR structure */</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">INVALID_HANDLE_VALUE</span><span class="p">;</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">patt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">cached</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Compute the length of full path plus zero terminator */</span> <span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">GetFullPathNameW</span><span class="w"> </span><span class="p">(</span><span class="n">dirname</span><span class="p">,</span><span class="w"> </span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span> <span class="w"> </span><span class="cm">/* Allocate room for absolute directory name and search pattern */</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">patt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">g_malloc</span><span class="w"> </span><span class="p">(</span><span class="k">sizeof</span><span class="w"> </span><span class="p">(</span><span class="kt">wchar_t</span><span class="p">)</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">16</span><span class="p">);</span> <span class="w"> </span><span class="cm">/*</span> <span class="cm"> * Convert relative directory name to an absolute one. This</span> <span class="cm"> * allows rewinddir() to function correctly even when current</span> <span class="cm"> * working directory is changed between opendir() and rewinddir().</span> <span class="cm"> */</span> <span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">GetFullPathNameW</span><span class="w"> </span><span class="p">(</span><span class="n">dirname</span><span class="p">,</span><span class="w"> </span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">patt</span><span class="p">,</span><span class="w"> </span><span class="nb">NULL</span><span class="p">);</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kt">wchar_t</span><span class="w"> </span><span class="o">*</span><span class="n">p</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Append search pattern \* to the directory name */</span> <span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">patt</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">n</span><span class="p">;</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">patt</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">p</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">switch</span><span class="w"> </span><span class="p">(</span><span class="n">p</span><span class="p">[</span><span class="mi">-1</span><span class="p">])</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'\\'</span><span class="p">:</span> <span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">'/'</span><span class="p">:</span> <span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="sc">':'</span><span class="p">:</span> <span class="w"> </span><span class="cm">/* Directory ends in path separator, e.g. c:\temp\ */</span> <span class="w"> </span><span class="cm">/*NOP*/</span><span class="p">;</span> <span class="w"> </span><span class="k">break</span><span class="p">;</span> <span class="w"> </span><span class="k">default</span><span class="o">:</span> <span class="w"> </span><span class="cm">/* Directory name doesn't end in path separator */</span> <span class="w"> </span><span class="o">*</span><span class="n">p</span><span class="o">++</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">'\\'</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="o">*</span><span class="n">p</span><span class="o">++</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">'*'</span><span class="p">;</span> <span class="w"> </span><span class="o">*</span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Open directory stream and retrieve the first entry */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirent_first</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="p">))</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Directory stream opened successfully */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Cannot retrieve first entry */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="n">dirent_set_errno</span><span class="w"> </span><span class="p">(</span><span class="n">ENOENT</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Cannot retrieve full path name */</span> <span class="w"> </span><span class="n">dirent_set_errno</span><span class="w"> </span><span class="p">(</span><span class="n">ENOENT</span><span class="p">);</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Clean up in case of error */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">error</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">dirp</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">_wclosedir</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="p">);</span> <span class="w"> </span><span class="n">dirp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">dirp</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/*</span> <span class="cm"> * Read next directory entry. The directory entry is returned in dirent</span> <span class="cm"> * structure in the d_name field. Individual directory entries returned by</span> <span class="cm"> * this function include regular files, sub-directories, pseudo-directories</span> <span class="cm"> * "." and ".." as well as volume labels, hidden files and system files.</span> <span class="cm"> */</span> <span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">_wdirent</span><span class="o">*</span> <span class="n">_wreaddir</span><span class="p">(</span> <span class="w"> </span><span class="n">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="n">WIN32_FIND_DATAW</span><span class="w"> </span><span class="o">*</span><span class="n">datap</span><span class="p">;</span> <span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">_wdirent</span><span class="w"> </span><span class="o">*</span><span class="n">entp</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Read next directory entry */</span> <span class="w"> </span><span class="n">datap</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dirent_next</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="p">);</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">datap</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">n</span><span class="p">;</span> <span class="w"> </span><span class="n">DWORD</span><span class="w"> </span><span class="n">attr</span><span class="p">;</span> <span class="w"> </span> <span class="w"> </span><span class="cm">/* Pointer to directory entry to return */</span> <span class="w"> </span><span class="n">entp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">dirp</span><span class="o">-></span><span class="n">ent</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* </span> <span class="cm"> * Copy file name as wide-character string. If the file name is too</span> <span class="cm"> * long to fit in to the destination buffer, then truncate file name</span> <span class="cm"> * to PATH_MAX characters and zero-terminate the buffer.</span> <span class="cm"> */</span> <span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="k">while</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">PATH_MAX</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">datap</span><span class="o">-></span><span class="n">cFileName</span><span class="p">[</span><span class="n">n</span><span class="p">]</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_name</span><span class="p">[</span><span class="n">n</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">datap</span><span class="o">-></span><span class="n">cFileName</span><span class="p">[</span><span class="n">n</span><span class="p">];</span> <span class="w"> </span><span class="n">n</span><span class="o">++</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">ent</span><span class="p">.</span><span class="n">d_name</span><span class="p">[</span><span class="n">n</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Length of file name excluding zero terminator */</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_namlen</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* File type */</span> <span class="w"> </span><span class="n">attr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">datap</span><span class="o">-></span><span class="n">dwFileAttributes</span><span class="p">;</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">attr</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">FILE_ATTRIBUTE_DEVICE</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DT_CHR</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">attr</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">FILE_ATTRIBUTE_DIRECTORY</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DT_DIR</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DT_REG</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Reset dummy fields */</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_ino</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_reclen</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">sizeof</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">_wdirent</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Last directory entry read */</span> <span class="w"> </span><span class="n">entp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">entp</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/*</span> <span class="cm"> * Close directory stream opened by opendir() function. This invalidates the</span> <span class="cm"> * DIR structure as well as any directory entry read previously by</span> <span class="cm"> * _wreaddir().</span> <span class="cm"> */</span> <span class="k">static</span><span class="w"> </span><span class="kt">int</span> <span class="n">_wclosedir</span><span class="p">(</span> <span class="w"> </span><span class="n">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ok</span><span class="p">;</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Release search handle */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">INVALID_HANDLE_VALUE</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">FindClose</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="p">);</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">INVALID_HANDLE_VALUE</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Release search pattern */</span> <span class="w"> </span><span class="n">g_free</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">patt</span><span class="p">);</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">patt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Release directory structure */</span> <span class="w"> </span><span class="n">g_free</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="p">);</span> <span class="w"> </span><span class="n">ok</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="cm">/*success*/</span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Invalid directory stream */</span> <span class="w"> </span><span class="n">dirent_set_errno</span><span class="w"> </span><span class="p">(</span><span class="n">EBADF</span><span class="p">);</span> <span class="w"> </span><span class="n">ok</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="cm">/*failure*/</span><span class="mi">-1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ok</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/*</span> <span class="cm"> * Rewind directory stream such that _wreaddir() returns the very first</span> <span class="cm"> * file name again.</span> <span class="cm"> */</span> <span class="k">static</span><span class="w"> </span><span class="kt">void</span> <span class="n">_wrewinddir</span><span class="p">(</span> <span class="w"> </span><span class="n">_WDIR</span><span class="o">*</span><span class="w"> </span><span class="n">dirp</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Release existing search handle */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">INVALID_HANDLE_VALUE</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">FindClose</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Open new search handle */</span> <span class="w"> </span><span class="n">dirent_first</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> <span class="cm">/* Get first directory entry (internal) */</span> <span class="k">static</span><span class="w"> </span><span class="n">WIN32_FIND_DATAW</span><span class="o">*</span> <span class="n">dirent_first</span><span class="p">(</span> <span class="w"> </span><span class="n">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="n">WIN32_FIND_DATAW</span><span class="w"> </span><span class="o">*</span><span class="n">datap</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Open directory and retrieve the first entry */</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">FindFirstFileW</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">patt</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">dirp</span><span class="o">-></span><span class="n">data</span><span class="p">);</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">INVALID_HANDLE_VALUE</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* a directory entry is now waiting in memory */</span> <span class="w"> </span><span class="n">datap</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">dirp</span><span class="o">-></span><span class="n">data</span><span class="p">;</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">cached</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Failed to re-open directory: no directory entry in memory */</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">cached</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="n">datap</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">datap</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/* Get next directory entry (internal) */</span> <span class="k">static</span><span class="w"> </span><span class="n">WIN32_FIND_DATAW</span><span class="o">*</span> <span class="n">dirent_next</span><span class="p">(</span> <span class="w"> </span><span class="n">_WDIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="n">WIN32_FIND_DATAW</span><span class="w"> </span><span class="o">*</span><span class="n">p</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Get next directory entry */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">cached</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* A valid directory entry already in memory */</span> <span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">dirp</span><span class="o">-></span><span class="n">data</span><span class="p">;</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">cached</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">INVALID_HANDLE_VALUE</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Get the next directory entry from stream */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">FindNextFileW</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">dirp</span><span class="o">-></span><span class="n">data</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="n">FALSE</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Got a file */</span> <span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">dirp</span><span class="o">-></span><span class="n">data</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* The very last entry has been processed or an error occured */</span> <span class="w"> </span><span class="n">FindClose</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="p">);</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">handle</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">INVALID_HANDLE_VALUE</span><span class="p">;</span> <span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* End of directory stream reached */</span> <span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">p</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/* </span> <span class="cm"> * Open directory stream using plain old C-string.</span> <span class="cm"> */</span> <span class="k">static</span><span class="w"> </span><span class="kt">DIR</span><span class="o">*</span> <span class="n">opendir</span><span class="p">(</span> <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">dirname</span><span class="p">)</span><span class="w"> </span> <span class="p">{</span> <span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">DIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">;</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">error</span><span class="p">;</span> <span class="w"> </span><span class="kt">wchar_t</span><span class="w"> </span><span class="n">wname</span><span class="p">[</span><span class="n">PATH_MAX</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">];</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">n</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Must have directory name */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirname</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="nb">NULL</span><span class="w"> </span><span class="o">||</span><span class="w"> </span><span class="n">dirname</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">dirent_set_errno</span><span class="w"> </span><span class="p">(</span><span class="n">ENOENT</span><span class="p">);</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Allocate memory for DIR structure */</span> <span class="w"> </span><span class="n">dirp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="kt">DIR</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="n">g_new</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">DIR</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span> <span class="w"> </span><span class="cm">/* Convert directory name to wide-character string */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dirent_mbstowcs_s</span><span class="p">(</span> <span class="w"> </span><span class="o">&</span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="n">wname</span><span class="p">,</span><span class="w"> </span><span class="n">PATH_MAX</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">dirname</span><span class="p">,</span><span class="w"> </span><span class="n">PATH_MAX</span><span class="p">);</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">error</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Open directory stream using wide-character name */</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">wdirp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">_wopendir</span><span class="w"> </span><span class="p">(</span><span class="n">wname</span><span class="p">);</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">wdirp</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Directory stream opened */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Failed to open directory stream */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* </span> <span class="cm"> * Cannot convert file name to wide-character string. This</span> <span class="cm"> * occurs if the string contains invalid multi-byte sequences or</span> <span class="cm"> * the output buffer is too small to contain the resulting</span> <span class="cm"> * string.</span> <span class="cm"> */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Clean up in case of error */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">error</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">g_free</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="p">);</span> <span class="w"> </span><span class="n">dirp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">dirp</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/*</span> <span class="cm"> * Read next directory entry.</span> <span class="cm"> *</span> <span class="cm"> * When working with text consoles, please note that file names returned by</span> <span class="cm"> * readdir() are represented in the default ANSI code page while any output to</span> <span class="cm"> * console is typically formatted on another code page. Thus, non-ASCII</span> <span class="cm"> * characters in file names will not usually display correctly on console. The</span> <span class="cm"> * problem can be fixed in two ways: (1) change the character set of console</span> <span class="cm"> * to 1252 using chcp utility and use Lucida Console font, or (2) use</span> <span class="cm"> * _cprintf function when writing to console. The _cprinf() will re-encode</span> <span class="cm"> * ANSI strings to the console code page so many non-ASCII characters will</span> <span class="cm"> * display correcly.</span> <span class="cm"> */</span> <span class="k">static</span><span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">dirent</span><span class="o">*</span> <span class="n">readdir</span><span class="p">(</span> <span class="w"> </span><span class="kt">DIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">)</span><span class="w"> </span> <span class="p">{</span> <span class="w"> </span><span class="n">WIN32_FIND_DATAW</span><span class="w"> </span><span class="o">*</span><span class="n">datap</span><span class="p">;</span> <span class="w"> </span><span class="k">struct</span><span class="w"> </span><span class="nc">dirent</span><span class="w"> </span><span class="o">*</span><span class="n">entp</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Read next directory entry */</span> <span class="w"> </span><span class="n">datap</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dirent_next</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">wdirp</span><span class="p">);</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">datap</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">n</span><span class="p">;</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">error</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Attempt to convert file name to multi-byte string */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dirent_wcstombs_s</span><span class="p">(</span> <span class="w"> </span><span class="o">&</span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">ent</span><span class="p">.</span><span class="n">d_name</span><span class="p">,</span><span class="w"> </span><span class="n">MAX_PATH</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">datap</span><span class="o">-></span><span class="n">cFileName</span><span class="p">,</span><span class="w"> </span><span class="n">MAX_PATH</span><span class="p">);</span> <span class="w"> </span><span class="cm">/* </span> <span class="cm"> * If the file name cannot be represented by a multi-byte string,</span> <span class="cm"> * then attempt to use old 8+3 file name. This allows traditional</span> <span class="cm"> * Unix-code to access some file names despite of unicode</span> <span class="cm"> * characters, although file names may seem unfamiliar to the user.</span> <span class="cm"> *</span> <span class="cm"> * Be ware that the code below cannot come up with a short file</span> <span class="cm"> * name unless the file system provides one. At least</span> <span class="cm"> * VirtualBox shared folders fail to do this.</span> <span class="cm"> */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">error</span><span class="w"> </span><span class="o">&&</span><span class="w"> </span><span class="n">datap</span><span class="o">-></span><span class="n">cAlternateFileName</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dirent_wcstombs_s</span><span class="p">(</span> <span class="w"> </span><span class="o">&</span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">ent</span><span class="p">.</span><span class="n">d_name</span><span class="p">,</span><span class="w"> </span><span class="n">MAX_PATH</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="n">datap</span><span class="o">-></span><span class="n">cAlternateFileName</span><span class="p">,</span> <span class="w"> </span><span class="k">sizeof</span><span class="w"> </span><span class="p">(</span><span class="n">datap</span><span class="o">-></span><span class="n">cAlternateFileName</span><span class="p">)</span><span class="w"> </span><span class="o">/</span><span class="w"> </span> <span class="w"> </span><span class="k">sizeof</span><span class="w"> </span><span class="p">(</span><span class="n">datap</span><span class="o">-></span><span class="n">cAlternateFileName</span><span class="p">[</span><span class="mi">0</span><span class="p">]));</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="o">!</span><span class="n">error</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">DWORD</span><span class="w"> </span><span class="n">attr</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Initialize directory entry for return */</span> <span class="w"> </span><span class="n">entp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">dirp</span><span class="o">-></span><span class="n">ent</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Length of file name excluding zero terminator */</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_namlen</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* File attributes */</span> <span class="w"> </span><span class="n">attr</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">datap</span><span class="o">-></span><span class="n">dwFileAttributes</span><span class="p">;</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">attr</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">FILE_ATTRIBUTE_DEVICE</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DT_CHR</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">((</span><span class="n">attr</span><span class="w"> </span><span class="o">&</span><span class="w"> </span><span class="n">FILE_ATTRIBUTE_DIRECTORY</span><span class="p">)</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DT_DIR</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DT_REG</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Reset dummy fields */</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_ino</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_reclen</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">sizeof</span><span class="w"> </span><span class="p">(</span><span class="k">struct</span><span class="w"> </span><span class="nc">dirent</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* </span> <span class="cm"> * Cannot convert file name to multi-byte string so construct</span> <span class="cm"> * an errornous directory entry and return that. Note that</span> <span class="cm"> * we cannot return NULL as that would stop the processing</span> <span class="cm"> * of directory entries completely.</span> <span class="cm"> */</span> <span class="w"> </span><span class="n">entp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">&</span><span class="n">dirp</span><span class="o">-></span><span class="n">ent</span><span class="p">;</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_name</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">'?'</span><span class="p">;</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_name</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">;</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_namlen</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_type</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DT_UNKNOWN</span><span class="p">;</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_ino</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="n">entp</span><span class="o">-></span><span class="n">d_reclen</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* No more directory entries */</span> <span class="w"> </span><span class="n">entp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">entp</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/*</span> <span class="cm"> * Close directory stream.</span> <span class="cm"> */</span> <span class="k">static</span><span class="w"> </span><span class="kt">int</span> <span class="n">closedir</span><span class="p">(</span> <span class="w"> </span><span class="kt">DIR</span><span class="w"> </span><span class="o">*</span><span class="n">dirp</span><span class="p">)</span><span class="w"> </span> <span class="p">{</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">ok</span><span class="p">;</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="w"> </span><span class="o">!=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Close wide-character directory stream */</span> <span class="w"> </span><span class="n">ok</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">_wclosedir</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">wdirp</span><span class="p">);</span> <span class="w"> </span><span class="n">dirp</span><span class="o">-></span><span class="n">wdirp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">NULL</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Release multi-byte character version */</span> <span class="w"> </span><span class="n">g_free</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Invalid directory stream */</span> <span class="w"> </span><span class="n">dirent_set_errno</span><span class="w"> </span><span class="p">(</span><span class="n">EBADF</span><span class="p">);</span> <span class="w"> </span><span class="n">ok</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="cm">/*failure*/</span><span class="mi">-1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">ok</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/*</span> <span class="cm"> * Rewind directory stream to beginning.</span> <span class="cm"> */</span> <span class="k">static</span><span class="w"> </span><span class="kt">void</span> <span class="n">rewinddir</span><span class="p">(</span> <span class="w"> </span><span class="kt">DIR</span><span class="o">*</span><span class="w"> </span><span class="n">dirp</span><span class="p">)</span><span class="w"> </span> <span class="p">{</span> <span class="w"> </span><span class="cm">/* Rewind wide-character string directory stream */</span> <span class="w"> </span><span class="n">_wrewinddir</span><span class="w"> </span><span class="p">(</span><span class="n">dirp</span><span class="o">-></span><span class="n">wdirp</span><span class="p">);</span> <span class="p">}</span> <span class="cm">/* Convert multi-byte string to wide character string */</span> <span class="k">static</span><span class="w"> </span><span class="kt">int</span> <span class="n">dirent_mbstowcs_s</span><span class="p">(</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="o">*</span><span class="n">pReturnValue</span><span class="p">,</span> <span class="w"> </span><span class="kt">wchar_t</span><span class="w"> </span><span class="o">*</span><span class="n">wcstr</span><span class="p">,</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">sizeInWords</span><span class="p">,</span> <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">mbstr</span><span class="p">,</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">count</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">error</span><span class="p">;</span> <span class="cp">#if defined(_MSC_VER) && _MSC_VER >= 1400</span> <span class="w"> </span><span class="cm">/* Microsoft Visual Studio 2005 or later */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mbstowcs_s</span><span class="w"> </span><span class="p">(</span><span class="n">pReturnValue</span><span class="p">,</span><span class="w"> </span><span class="n">wcstr</span><span class="p">,</span><span class="w"> </span><span class="n">sizeInWords</span><span class="p">,</span><span class="w"> </span><span class="n">mbstr</span><span class="p">,</span><span class="w"> </span><span class="n">count</span><span class="p">);</span> <span class="cp">#else</span> <span class="w"> </span><span class="cm">/* Older Visual Studio or non-Microsoft compiler */</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">n</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Convert to wide-character string */</span> <span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">mbstowcs</span><span class="w"> </span><span class="p">(</span><span class="n">wcstr</span><span class="p">,</span><span class="w"> </span><span class="n">mbstr</span><span class="p">,</span><span class="w"> </span><span class="n">count</span><span class="p">);</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">sizeInWords</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Zero-terminate output buffer */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">wcstr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">wcstr</span><span class="p">[</span><span class="n">n</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Length of resuting multi-byte string WITH zero terminator */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">pReturnValue</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="o">*</span><span class="n">pReturnValue</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Success */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Could not convert string */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="cp">#endif</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">error</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/* Convert wide-character string to multi-byte string */</span> <span class="k">static</span><span class="w"> </span><span class="kt">int</span> <span class="n">dirent_wcstombs_s</span><span class="p">(</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="o">*</span><span class="n">pReturnValue</span><span class="p">,</span> <span class="w"> </span><span class="kt">char</span><span class="w"> </span><span class="o">*</span><span class="n">mbstr</span><span class="p">,</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">sizeInBytes</span><span class="p">,</span> <span class="w"> </span><span class="k">const</span><span class="w"> </span><span class="kt">wchar_t</span><span class="w"> </span><span class="o">*</span><span class="n">wcstr</span><span class="p">,</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">count</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">error</span><span class="p">;</span> <span class="cp">#if defined(_MSC_VER) && _MSC_VER >= 1400</span> <span class="w"> </span><span class="cm">/* Microsoft Visual Studio 2005 or later */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">wcstombs_s</span><span class="w"> </span><span class="p">(</span><span class="n">pReturnValue</span><span class="p">,</span><span class="w"> </span><span class="n">mbstr</span><span class="p">,</span><span class="w"> </span><span class="n">sizeInBytes</span><span class="p">,</span><span class="w"> </span><span class="n">wcstr</span><span class="p">,</span><span class="w"> </span><span class="n">count</span><span class="p">);</span> <span class="cp">#else</span> <span class="w"> </span><span class="cm">/* Older Visual Studio or non-Microsoft compiler */</span> <span class="w"> </span><span class="kt">size_t</span><span class="w"> </span><span class="n">n</span><span class="p">;</span> <span class="w"> </span><span class="cm">/* Convert to multi-byte string */</span> <span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">wcstombs</span><span class="w"> </span><span class="p">(</span><span class="n">mbstr</span><span class="p">,</span><span class="w"> </span><span class="n">wcstr</span><span class="p">,</span><span class="w"> </span><span class="n">count</span><span class="p">);</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="n">sizeInBytes</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Zero-terminate output buffer */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">mbstr</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">mbstr</span><span class="p">[</span><span class="n">n</span><span class="p">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="sc">'\0'</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Lenght of resulting multi-bytes string WITH zero-terminator */</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">pReturnValue</span><span class="p">)</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="o">*</span><span class="n">pReturnValue</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="w"> </span><span class="cm">/* Success */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span><span class="w"> </span><span class="k">else</span><span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="cm">/* Cannot convert string */</span> <span class="w"> </span><span class="n">error</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">1</span><span class="p">;</span> <span class="w"> </span><span class="p">}</span> <span class="cp">#endif</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">error</span><span class="p">;</span> <span class="p">}</span> <span class="cm">/* Set errno variable */</span> <span class="k">static</span><span class="w"> </span><span class="kt">void</span> <span class="n">dirent_set_errno</span><span class="p">(</span> <span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">error</span><span class="p">)</span> <span class="p">{</span> <span class="cp">#if defined(_MSC_VER)</span> <span class="w"> </span><span class="cm">/* Microsoft Visual Studio */</span> <span class="w"> </span><span class="n">_set_errno</span><span class="w"> </span><span class="p">(</span><span class="n">error</span><span class="p">);</span> <span class="cp">#else</span> <span class="w"> </span><span class="cm">/* Non-Microsoft compiler */</span> <span class="w"> </span><span class="n">errno</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">error</span><span class="p">;</span> <span class="cp">#endif</span> <span class="p">}</span> <span class="cp">#ifdef __cplusplus</span> <span class="p">}</span> <span class="cp">#endif</span> <span class="cp">#endif </span><span class="cm">/*DIRENT_H*/</span> </pre></div> </code></pre></td></tr></table> </div> <!-- class=content --> <div class='footer'>generated by <a href='https://git.causal.agency/cgit-pink/about/'>cgit-pink 1.4.1</a> (<a href='https://git-scm.com/'>git 2.36.1</a>) at 2025-01-17 16:39:45 +0000</div> </div> <!-- id=cgit --> </body> </html> or user modes" msgstr "" #: ../src/fe-gtk/setup.c:255 msgid "Use graphical icons instead of text symbols in the user list." msgstr "" #: ../src/fe-gtk/setup.c:256 msgid "Color nicknames in userlist" msgstr "" #: ../src/fe-gtk/setup.c:256 msgid "Will color nicknames the same as in chat." msgstr "" #: ../src/fe-gtk/setup.c:257 msgid "Show user count in channels" msgstr "" #. {ST_TOGGLE, N_("Resizable user list"), #. P_OFFINTNL(hex_gui_ulist_resizable),0,0,0}, #: ../src/fe-gtk/setup.c:259 msgid "User list sorted by:" msgstr "Сартаваць спіс карыстальнікаў па:" #: ../src/fe-gtk/setup.c:260 msgid "Show user list at:" msgstr "" #: ../src/fe-gtk/setup.c:262 msgid "Away Tracking" msgstr "" #: ../src/fe-gtk/setup.c:263 msgid "Track the Away status of users and mark them in a different color" msgstr "Сачыць за адышэдшымі і маляваць іх іншым колерам" #: ../src/fe-gtk/setup.c:264 msgid "On channels smaller than:" msgstr "На каналах менш за" #: ../src/fe-gtk/setup.c:266 msgid "Action Upon Double Click" msgstr "Рэакцыя на падвоены націск мышы" #: ../src/fe-gtk/setup.c:269 msgid "Extra Gadgets" msgstr "" #: ../src/fe-gtk/setup.c:270 msgid "Lag meter:" msgstr "" #: ../src/fe-gtk/setup.c:271 msgid "Throttle meter:" msgstr "" #: ../src/fe-gtk/setup.c:278 msgid "Windows" msgstr "Вокны" #: ../src/fe-gtk/setup.c:279 ../src/fe-gtk/setup.c:301 msgid "Tabs" msgstr "Укладкі" #: ../src/fe-gtk/setup.c:286 msgid "Always" msgstr "Заўсёды" #: ../src/fe-gtk/setup.c:287 msgid "Only requested tabs" msgstr "Толькі запрошаныя ўкладкі" #: ../src/fe-gtk/setup.c:293 msgid "Automatic" msgstr "" #: ../src/fe-gtk/setup.c:294 msgid "In an extra tab" msgstr "" #: ../src/fe-gtk/setup.c:295 msgid "In the front tab" msgstr "" #. 0 tabs #. 1 reserved #: ../src/fe-gtk/setup.c:303 msgid "Tree" msgstr "" #. {ST_HEADER, N_("Channel Switcher"),0,0,0}, #: ../src/fe-gtk/setup.c:310 msgid "Switcher type:" msgstr "" #: ../src/fe-gtk/setup.c:311 msgid "Open an extra tab for server messages" msgstr "Адкрываць дадатковыя ўкладкі для паведамленняў сервера (message)" #: ../src/fe-gtk/setup.c:312 msgid "Open a new tab when you receive a private message" msgstr "Адкрываць новую ўкладку для атрымання асабістага паведамлення" #: ../src/fe-gtk/setup.c:313 msgid "Sort tabs in alphabetical order" msgstr "Сартаваць укладкі ў алфавітным парадку" #: ../src/fe-gtk/setup.c:314 msgid "Show icons in the channel tree" msgstr "" #: ../src/fe-gtk/setup.c:315 msgid "Show dotted lines in the channel tree" msgstr "" #: ../src/fe-gtk/setup.c:316 msgid "Scroll mouse-wheel to change tabs" msgstr "" #: ../src/fe-gtk/setup.c:317 msgid "Smaller text" msgstr "" #: ../src/fe-gtk/setup.c:318 msgid "Focus new tabs:" msgstr "Фокус на новыя ўкладкі:" #: ../src/fe-gtk/setup.c:319 msgid "Placement of notices:" msgstr "" #: ../src/fe-gtk/setup.c:320 msgid "Show channel switcher at:" msgstr "" #: ../src/fe-gtk/setup.c:321 msgid "Shorten tab labels to:" msgstr "Скарачаць укладкі да:" #: ../src/fe-gtk/setup.c:321 msgid "letters." msgstr "знакаў" #: ../src/fe-gtk/setup.c:323 msgid "Tabs or Windows" msgstr "Укладкі ці вокны:" #: ../src/fe-gtk/setup.c:324 msgid "Open channels in:" msgstr "Адкрываць каналы ў:" #: ../src/fe-gtk/setup.c:325 msgid "Open dialogs in:" msgstr "Адкрываць дыялогі ў:" #: ../src/fe-gtk/setup.c:326 msgid "Open utilities in:" msgstr "Адкрываць сродкі ў:" #: ../src/fe-gtk/setup.c:326 msgid "Open DCC, Ignore, Notify etc, in tabs or windows?" msgstr "Адкрываць DCC, Ігнараванне, Абвяшчэнні і г.д. ва ўкладках ці вокнах?" #: ../src/fe-gtk/setup.c:333 msgid "Messages" msgstr "" #: ../src/fe-gtk/setup.c:334 msgid "Scrollback" msgstr "" #: ../src/fe-gtk/setup.c:342 msgid "Ask for confirmation" msgstr "" #: ../src/fe-gtk/setup.c:343 msgid "Ask for download folder" msgstr "" #: ../src/fe-gtk/setup.c:344 msgid "Save without interaction" msgstr "" #: ../src/fe-gtk/setup.c:350 msgid "Files and Directories" msgstr "Файлы і тэчкі" #: ../src/fe-gtk/setup.c:351 msgid "Auto accept file offers:" msgstr "Аўтаматычна згаджацца з прапановамі файлаў" #: ../src/fe-gtk/setup.c:352 msgid "Download files to:" msgstr "Спампоўваць файлы ў:" #: ../src/fe-gtk/setup.c:353 msgid "Move completed files to:" msgstr "Перамяшчаць завершаныя файлы ў:" #: ../src/fe-gtk/setup.c:354 msgid "Save nick name in filenames" msgstr "Захоўваць мянушкі ў імёнах файлаў" #: ../src/fe-gtk/setup.c:356 msgid "Auto Open DCC Windows" msgstr "Аўтаматычна адкрываць вокны DCC" #: ../src/fe-gtk/setup.c:357 msgid "Send window" msgstr "Акно дасылкі" #: ../src/fe-gtk/setup.c:358 msgid "Receive window" msgstr "Акно атрымання" #: ../src/fe-gtk/setup.c:359 msgid "Chat window" msgstr "Акно размовы" #: ../src/fe-gtk/setup.c:361 msgid "Maximum File Transfer Speeds (bytes per second)" msgstr "Найвялікшая хуткасць перадачы файлаў (байтаў у секунду)" #: ../src/fe-gtk/setup.c:362 msgid "One upload:" msgstr "Адно запампоўванне:" #: ../src/fe-gtk/setup.c:363 ../src/fe-gtk/setup.c:365 msgid "Maximum speed for one transfer" msgstr "Найвялікшая хуткасць для адной перадачы" #: ../src/fe-gtk/setup.c:364 msgid "One download:" msgstr "Адно спампоўванне:" #: ../src/fe-gtk/setup.c:366 msgid "All uploads combined:" msgstr "Усе запампоўванні:" #: ../src/fe-gtk/setup.c:367 ../src/fe-gtk/setup.c:369 msgid "Maximum speed for all files" msgstr "Найвялікшая хуткасць" #: ../src/fe-gtk/setup.c:368 msgid "All downloads combined:" msgstr "Усе спампоўванні:" #: ../src/fe-gtk/setup.c:396 ../src/fe-gtk/setup.c:449 #: ../src/fe-gtk/setup.c:1815 msgid "Alerts" msgstr "Тэрміновыя паведамленні" #: ../src/fe-gtk/setup.c:400 ../src/fe-gtk/setup.c:452 msgid "Show tray balloons on:" msgstr "Паказваць балёнікі ў сподку пры:" #: ../src/fe-gtk/setup.c:402 msgid "Blink tray icon on:" msgstr "Міргаць сподкавай значкай пры:" #: ../src/fe-gtk/setup.c:404 msgid "Bounce dock icon on:" msgstr "" #: ../src/fe-gtk/setup.c:407 ../src/fe-gtk/setup.c:453 msgid "Blink task bar on:" msgstr "Міргаць сподкам пры:" #: ../src/fe-gtk/setup.c:411 ../src/fe-gtk/setup.c:414 #: ../src/fe-gtk/setup.c:416 ../src/fe-gtk/setup.c:454 msgid "Make a beep sound on:" msgstr "Паведаміць піскам пры:" #: ../src/fe-gtk/setup.c:411 msgid "" "Play the \"Instant Message Notification\" system sound upon the selected " "events" msgstr "" #: ../src/fe-gtk/setup.c:414 msgid "" "Play \"message-new-instant\" from the freedesktop.org sound theme upon the " "selected events" msgstr "" #: ../src/fe-gtk/setup.c:416 msgid "Play a GTK beep upon the selected events" msgstr "" #: ../src/fe-gtk/setup.c:420 ../src/fe-gtk/setup.c:456 msgid "Omit alerts when marked as being away" msgstr "" #: ../src/fe-gtk/setup.c:421 ../src/fe-gtk/setup.c:457 msgid "Omit alerts while the window is focused" msgstr "" #: ../src/fe-gtk/setup.c:423 msgid "Tray Behavior" msgstr "" #: ../src/fe-gtk/setup.c:425 ../src/fe-gtk/setup.c:427 msgid "Enable system tray icon" msgstr "Задзейнічаць значку ў сістэмным сподку" #: ../src/fe-gtk/setup.c:429 msgid "Minimize to tray" msgstr "" #: ../src/fe-gtk/setup.c:430 msgid "Close to tray" msgstr "" #: ../src/fe-gtk/setup.c:431 msgid "Automatically mark away/back" msgstr "" #: ../src/fe-gtk/setup.c:431 msgid "Automatically change status when hiding to tray." msgstr "" #: ../src/fe-gtk/setup.c:433 msgid "Only show tray balloons when hidden or iconified" msgstr "" #: ../src/fe-gtk/setup.c:436 ../src/fe-gtk/setup.c:459 msgid "Highlighted Messages" msgstr "Падсвечаныя паведамленні" #: ../src/fe-gtk/setup.c:437 ../src/fe-gtk/setup.c:460 msgid "" "Highlighted messages are ones where your nickname is mentioned, but also:" msgstr "Падсвечваць паведамленні, дзе згадана ваша мянушка і:" #: ../src/fe-gtk/setup.c:439 ../src/fe-gtk/setup.c:462 msgid "Extra words to highlight:" msgstr "Дадатковыя словы для падсветкі:" #: ../src/fe-gtk/setup.c:440 ../src/fe-gtk/setup.c:463 msgid "Nick names not to highlight:" msgstr "Мянушкі, тэкст ад якіх не падсвечваць" #: ../src/fe-gtk/setup.c:441 ../src/fe-gtk/setup.c:464 msgid "Nick names to always highlight:" msgstr "Мянушкі, тэкст ад якіх заўжды падсвечваць" #: ../src/fe-gtk/setup.c:442 ../src/fe-gtk/setup.c:465 msgid "" "Separate multiple words with commas.\n" "Wildcards are accepted." msgstr "" #: ../src/fe-gtk/setup.c:472 msgid "Default Messages" msgstr "Прадвызначаныя паведамленні" #: ../src/fe-gtk/setup.c:473 msgid "Quit:" msgstr "Выхад:" #: ../src/fe-gtk/setup.c:474 msgid "Leave channel:" msgstr "Выйсці з канала: " #: ../src/fe-gtk/setup.c:475 msgid "Away:" msgstr "Адыйсці:" #: ../src/fe-gtk/setup.c:477 msgid "Away" msgstr "Адыход" #: ../src/fe-gtk/setup.c:478 msgid "Show away once" msgstr "Паказваць \"Адышэдшы\" толькі адзін раз" #: ../src/fe-gtk/setup.c:478 msgid "Show identical away messages only once." msgstr "" #: ../src/fe-gtk/setup.c:479 msgid "Automatically unmark away" msgstr "Аўтаматычна здымаць статус \"Адышэдшы\"" #: ../src/fe-gtk/setup.c:479 msgid "Unmark yourself as away before sending messages." msgstr "" #: ../src/fe-gtk/setup.c:481 ../src/fe-gtk/setup.c:514 msgid "Miscellaneous" msgstr "" #: ../src/fe-gtk/setup.c:482 msgid "Display MODEs in raw form" msgstr "Паказваць рэжымы ў чыстым выглядзе " #: ../src/fe-gtk/setup.c:483 msgid "WHOIS on notify" msgstr "" #: ../src/fe-gtk/setup.c:483 msgid "Sends a /WHOIS when a user comes online in your notify list." msgstr "" #: ../src/fe-gtk/setup.c:484 msgid "Hide join and part messages" msgstr "Схаваць паведамленні аб уваходзе і адыходзе" #: ../src/fe-gtk/setup.c:484 msgid "Hide channel join/part messages by default." msgstr "" #: ../src/fe-gtk/setup.c:485 msgid "Hide nick change messages" msgstr "" #: ../src/fe-gtk/setup.c:492 msgid "*!*@*.host" msgstr "" #: ../src/fe-gtk/setup.c:493 msgid "*!*@domain" msgstr "" #: ../src/fe-gtk/setup.c:494 msgid "*!*user@*.host" msgstr "" #: ../src/fe-gtk/setup.c:495 msgid "*!*user@domain" msgstr "" #: ../src/fe-gtk/setup.c:501 msgid "Auto Copy Behavior" msgstr "" #: ../src/fe-gtk/setup.c:502 msgid "Automatically copy selected text" msgstr "" #: ../src/fe-gtk/setup.c:503 msgid "" "Copy selected text to clipboard when left mouse button is released. " "Otherwise, CONTROL-SHIFT-C will copy the selected text to the clipboard." msgstr "" #: ../src/fe-gtk/setup.c:506 msgid "Automatically include time stamps" msgstr "" #: ../src/fe-gtk/setup.c:507 msgid "" "Automatically include time stamps in copied lines of text. Otherwise, " "include time stamps if the SHIFT key is held down while selecting." msgstr "" #: ../src/fe-gtk/setup.c:509 msgid "Automatically include color information" msgstr "" #: ../src/fe-gtk/setup.c:510 msgid "" "Automatically include color information in copied lines of text. Otherwise," " include color information if the CONTROL key is held down while selecting." msgstr "" #: ../src/fe-gtk/setup.c:515 msgid "Real name:" msgstr "" #: ../src/fe-gtk/setup.c:517 msgid "Alternative fonts:" msgstr "" #: ../src/fe-gtk/setup.c:517 msgid "Separate multiple entries with commas without spaces before or after." msgstr "" #: ../src/fe-gtk/setup.c:519 msgid "Display lists in compact mode" msgstr "" #: ../src/fe-gtk/setup.c:519 msgid "Use less spacing between user list/channel tree rows." msgstr "" #: ../src/fe-gtk/setup.c:520 msgid "Use server time if supported" msgstr "" #: ../src/fe-gtk/setup.c:520 msgid "" "Display timestamps obtained from server if it supports the time-server " "extension." msgstr "" #: ../src/fe-gtk/setup.c:521 msgid "Automatically reconnect to servers on disconnect" msgstr "" #: ../src/fe-gtk/setup.c:522 msgid "Auto reconnect delay:" msgstr "Затрымка паміж спробамі злучыцца" #: ../src/fe-gtk/setup.c:523 msgid "Auto join delay:" msgstr "" #: ../src/fe-gtk/setup.c:524 msgid "Ban Type:" msgstr "" #: ../src/fe-gtk/setup.c:524 msgid "" "Attempt to use this banmask when banning or quieting. (requires " "irc_who_join)" msgstr "" #: ../src/fe-gtk/setup.c:531 ../src/fe-gtk/setup.c:1817 msgid "Logging" msgstr "Журнал" #: ../src/fe-gtk/setup.c:532 msgid "Display scrollback from previous session" msgstr "" #: ../src/fe-gtk/setup.c:533 msgid "Scrollback lines:" msgstr "Лініі пракруткі:" #: ../src/fe-gtk/setup.c:534 msgid "Enable logging of conversations to disk" msgstr "" #: ../src/fe-gtk/setup.c:535 msgid "Log filename:" msgstr "Імя файла журналу:" #: ../src/fe-gtk/setup.c:536 #, c-format msgid "%s=Server %c=Channel %n=Network." msgstr "(%s=Сервер %c=Канал %n=Сеціва)." #: ../src/fe-gtk/setup.c:539 msgid "Insert timestamps in logs" msgstr "Устаўляць адзнакі часу ў журнал" #: ../src/fe-gtk/setup.c:540 msgid "Log timestamp format:" msgstr "Фармат адзнакаў часу:" #: ../src/fe-gtk/setup.c:547 msgid "URLs" msgstr "URL" #: ../src/fe-gtk/setup.c:548 msgid "Enable logging of URLs to disk" msgstr "" #: ../src/fe-gtk/setup.c:549 msgid "Enable URL grabber" msgstr "" #: ../src/fe-gtk/setup.c:550 msgid "Maximum number of URLs to grab:" msgstr "" #: ../src/fe-gtk/setup.c:557 msgid "(Disabled)" msgstr "(Адключана)" #: ../src/fe-gtk/setup.c:558 msgid "Wingate" msgstr "Wingate" #: ../src/fe-gtk/setup.c:559 msgid "Socks4" msgstr "Socks4" #: ../src/fe-gtk/setup.c:560 msgid "Socks5" msgstr "Socks5" #: ../src/fe-gtk/setup.c:561 msgid "HTTP" msgstr "HTTP" #: ../src/fe-gtk/setup.c:563 msgid "MS Proxy (ISA)" msgstr "MS Proxy (ISA)" #: ../src/fe-gtk/setup.c:566 msgid "Auto" msgstr "" #: ../src/fe-gtk/setup.c:573 msgid "All Connections" msgstr "Усе злучэнні" #: ../src/fe-gtk/setup.c:574 msgid "IRC Server Only" msgstr "Толькі IRC-сервер" #: ../src/fe-gtk/setup.c:575 msgid "DCC Get Only" msgstr "Толькі атрыманне DCC" #: ../src/fe-gtk/setup.c:581 msgid "Your Address" msgstr "Ваш адрас" #: ../src/fe-gtk/setup.c:582 msgid "Bind to:" msgstr "Ужываць адрас:" #: ../src/fe-gtk/setup.c:583 msgid "Only useful for computers with multiple addresses." msgstr "Карысна толькі для кампутараў з некалькімі адрасамі." #: ../src/fe-gtk/setup.c:585 msgid "File Transfers" msgstr "" #: ../src/fe-gtk/setup.c:586 msgid "Get my address from the IRC server" msgstr "Атрымаць мой адрас ад IRC-сервера" #: ../src/fe-gtk/setup.c:587 msgid "" "Asks the IRC server for your real address. Use this if you have a " "192.168.*.* address!" msgstr "Запытаць IRC-сервер аб вашым сапраўдным адрасе. Выкарыстоувайце, калі вы маеце адрас кшталту 192.168.*.*!" #: ../src/fe-gtk/setup.c:588 msgid "DCC IP address:" msgstr "DCC IP адрас:" #: ../src/fe-gtk/setup.c:589 msgid "Claim you are at this address when offering files." msgstr "Абвяшчаць аб гэтым адрасе пры прапанове файлаў." #: ../src/fe-gtk/setup.c:590 msgid "First DCC send port:" msgstr "Першы порт для дасылкі DCC:" #: ../src/fe-gtk/setup.c:591 msgid "Last DCC send port:" msgstr "Апошні порт для дасылкі DCC:" #: ../src/fe-gtk/setup.c:592 msgid "!Leave ports at zero for full range." msgstr "!Пакіньце парты нулявымі для поўнага дыяпазону." #: ../src/fe-gtk/setup.c:594 msgid "Proxy Server" msgstr "Проксі-сервер" #: ../src/fe-gtk/setup.c:595 msgid "Hostname:" msgstr "Хост:" #: ../src/fe-gtk/setup.c:596 msgid "Port:" msgstr "Порт:" #: ../src/fe-gtk/setup.c:597 msgid "Type:" msgstr "Тып:" #: ../src/fe-gtk/setup.c:598 msgid "Use proxy for:" msgstr "Выкарыстоўваць проксі для:" #: ../src/fe-gtk/setup.c:600 msgid "Proxy Authentication" msgstr "Спраўжванне на проксі" #: ../src/fe-gtk/setup.c:602 msgid "Use Authentication (MS Proxy, HTTP or Socks5 only)" msgstr "Спраўжванне на проксі-серверы (толькі MS Proxy, HTTP ці Socks5)" #: ../src/fe-gtk/setup.c:604 msgid "Use Authentication (HTTP or Socks5 only)" msgstr "Праверка на проксі-серверы (толькі HTTP ці Socks5)" #: ../src/fe-gtk/setup.c:606 msgid "Username:" msgstr "Імя карыстальніка:" #: ../src/fe-gtk/setup.c:1052 msgid "Select an Image File" msgstr "Абярыце файл выявы" #: ../src/fe-gtk/setup.c:1088 msgid "Select Download Folder" msgstr "Абярыце тэчку для спамповак" #: ../src/fe-gtk/setup.c:1098 msgid "Select font" msgstr "Абярыце шрыфт" #: ../src/fe-gtk/setup.c:1199 msgid "Browse..." msgstr "Агляд.." #: ../src/fe-gtk/setup.c:1337 msgid "Open Data Folder" msgstr "Адкрыць тэчку данніх" #: ../src/fe-gtk/setup.c:1388 msgid "Select color" msgstr "Вылучце колер" #: ../src/fe-gtk/setup.c:1476 msgid "Text Colors" msgstr "Колеры тэксту" #: ../src/fe-gtk/setup.c:1478 msgid "mIRC colors:" msgstr "Колеры mIRC:" #: ../src/fe-gtk/setup.c:1486 msgid "Local colors:" msgstr "Лакальныя колеры:" #: ../src/fe-gtk/setup.c:1494 ../src/fe-gtk/setup.c:1499 msgid "Foreground:" msgstr "Колер літар:" #: ../src/fe-gtk/setup.c:1495 ../src/fe-gtk/setup.c:1500 msgid "Background:" msgstr "Фон:" #: ../src/fe-gtk/setup.c:1497 msgid "Selected Text" msgstr "" #: ../src/fe-gtk/setup.c:1502 msgid "Interface Colors" msgstr "Колеры інтэрфейсу" #: ../src/fe-gtk/setup.c:1504 msgid "New data:" msgstr "Новыя дадзеныя:" #: ../src/fe-gtk/setup.c:1505 msgid "Marker line:" msgstr "Лінія-адзнака:" #: ../src/fe-gtk/setup.c:1506 msgid "New message:" msgstr "Новае паведамленне:" #: ../src/fe-gtk/setup.c:1507 msgid "Away user:" msgstr "Адышэдшы карыстальнік:" #: ../src/fe-gtk/setup.c:1508 msgid "Highlight:" msgstr "Падсветка:" #: ../src/fe-gtk/setup.c:1509 msgid "Spell checker:" msgstr "" #: ../src/fe-gtk/setup.c:1511 msgid "Color Stripping" msgstr "" #: ../src/fe-gtk/setup.c:1608 ../src/fe-gtk/textgui.c:372 msgid "Event" msgstr "Падзея" #: ../src/fe-gtk/setup.c:1614 msgid "Sound file" msgstr "Гукавы файл" #: ../src/fe-gtk/setup.c:1658 msgid "Select a sound file" msgstr "Абярыце гукавы файл" #: ../src/fe-gtk/setup.c:1743 msgid "Sound file:" msgstr "Гукавы файл:" #: ../src/fe-gtk/setup.c:1758 msgid "_Browse..." msgstr "_Знайсці..." #: ../src/fe-gtk/setup.c:1769 msgid "_Play" msgstr "_Граць" #: ../src/fe-gtk/setup.c:1806 msgid "Interface" msgstr "Інтэрфейс" #: ../src/fe-gtk/setup.c:1807 msgid "Appearance" msgstr "" #: ../src/fe-gtk/setup.c:1808 msgid "Input box" msgstr "Акно ўводу" #: ../src/fe-gtk/setup.c:1809 msgid "User list" msgstr "Спіс карыстальнікаў" #: ../src/fe-gtk/setup.c:1810 msgid "Channel switcher" msgstr "" #: ../src/fe-gtk/setup.c:1811 msgid "Colors" msgstr "Колеры" #: ../src/fe-gtk/setup.c:1813 msgid "Chatting" msgstr "Размовы" #: ../src/fe-gtk/setup.c:1816 msgid "Sounds" msgstr "" #: ../src/fe-gtk/setup.c:1818 msgid "Advanced" msgstr "Адмысловыя" #: ../src/fe-gtk/setup.c:1821 msgid "Network setup" msgstr "Сеціўныя наладкі" #: ../src/fe-gtk/setup.c:1822 msgid "File transfers" msgstr "Абмен файламі" #: ../src/fe-gtk/setup.c:1942 msgid "Categories" msgstr "Катэгорыі" #: ../src/fe-gtk/setup.c:2135 msgid "" "You cannot place the tree on the top or bottom!\n" "Please change to the <b>Tabs</b> layout in the <b>View</b> menu first." msgstr "Вы не можаце размясціць дрэва ўверсе ці ўнізе!\nСпачатку змяніце Асяроддзе на <b>Ўкладкі</b> ў меню <b>Прагляд</b>." #: ../src/fe-gtk/setup.c:2160 msgid "The Real name option cannot be left blank. Falling back to \"realname\"." msgstr "" #: ../src/fe-gtk/setup.c:2167 msgid "Some settings were changed that require a restart to take full effect." msgstr "Некаторыя наладкі будуць зменены толькі пасля рэстарту." #: ../src/fe-gtk/setup.c:2175 msgid "" "*WARNING*\n" "Auto accepting DCC to your home directory\n" "can be dangerous and is exploitable. Eg:\n" "Someone could send you a .bash_profile" msgstr "*УВАГА*\nАўтапрыманне DCC у вашу хатнюю тэчку ёсць\nнебяспечным і можа быць выкарыставана, напрыклад,\nнехта можа даслаць вам .bash_profile" #: ../src/fe-gtk/setup.c:2198 msgid ": Preferences" msgstr "XChat: Асаблівасці" #: ../src/fe-gtk/sexy-spell-entry.c:545 msgid "<i>(no suggestions)</i>" msgstr "" #: ../src/fe-gtk/sexy-spell-entry.c:559 msgid "More..." msgstr "" #. + Add to Dictionary #: ../src/fe-gtk/sexy-spell-entry.c:631 #, c-format msgid "Add \"%s\" to Dictionary" msgstr "" #. - Ignore All #: ../src/fe-gtk/sexy-spell-entry.c:676 msgid "Ignore All" msgstr "" #: ../src/fe-gtk/sexy-spell-entry.c:711 msgid "Spelling Suggestions" msgstr "" #: ../src/fe-gtk/sexy-spell-entry.c:1272 #, c-format msgid "enchant error for language: %s" msgstr "" #: ../src/fe-gtk/textgui.c:171 msgid "There was an error parsing the string" msgstr "Узнікла памылка пры апрацоўцы радка" #: ../src/fe-gtk/textgui.c:179 #, c-format msgid "This signal is only passed %d args, $%d is invalid" msgstr "Гэты сігнал прымае толькі %d аргументаў, $%d няправільны" #: ../src/fe-gtk/textgui.c:289 ../src/fe-gtk/textgui.c:311 msgid "Print Texts File" msgstr "Друкаваць тэкставы файл" #: ../src/fe-gtk/textgui.c:421 msgid "$ Number" msgstr "$ Лічба" #: ../src/fe-gtk/textgui.c:453 msgid "Edit Events" msgstr "Рэдагаваць падзеі" #: ../src/fe-gtk/textgui.c:481 msgid "Load From..." msgstr "Загрузіць з..." #: ../src/fe-gtk/textgui.c:483 msgid "Test All" msgstr "Праверыць усё" #: ../src/fe-gtk/textgui.c:485 msgid "OK" msgstr "" #: ../src/fe-gtk/urlgrab.c:198 msgid ": URL Grabber" msgstr "XChat: Зборшчык URL" #: ../src/fe-gtk/urlgrab.c:212 msgid "Clear list" msgstr "Ачысціць спіс" #: ../src/fe-gtk/urlgrab.c:214 msgid "Copy selected URL" msgstr "Капіяваць выбраны URL" #: ../src/fe-gtk/urlgrab.c:214 msgid "Copy" msgstr "Капіяваць" #: ../src/fe-gtk/urlgrab.c:216 msgid "Save list to a file" msgstr "Захаваць спіс у файл" #: ../src/fe-gtk/userlistgui.c:108 #, c-format msgid "%d ops, %d total" msgstr "%d апер, %d усяго"