facf0c92e0
Red Bear OS is a full fork. All sources must be available from git clone with zero network access. Removed gitignore rules that excluded fetched source trees under recipes/*/source/, local/recipes/kde/*/source/, local/recipes/qt/*/source/, and vendor source trees. Build artifacts (target/, build/, source.tar, *.o, *.so) remain excluded. 127291 files added — kernel, relibc, base, bootloader, pkgar, all KDE/Qt frameworks, mesa, wayland, DRM drivers, and every other recipe source.
92 lines
3.1 KiB
C#
92 lines
3.1 KiB
C#
/* GNU gettext for C#
|
|
* Copyright (C) 2003-2004, 2018 Free Software Foundation, Inc.
|
|
* Written by Bruno Haible <bruno@clisp.org>, 2003.
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/*
|
|
* This program creates a .resources file from a set of key/value pairs given
|
|
* on standard input.
|
|
*/
|
|
|
|
using System; /* String, Console, Exception */
|
|
using System.IO; /* Stream, BufferedStream, StreamReader */
|
|
using System.Text; /* StringBuilder, UTF8Encoding */
|
|
using System.Resources; /* ResourceWriter */
|
|
|
|
namespace GNU.Gettext {
|
|
public class WriteResource {
|
|
private StreamReader reader;
|
|
// Read a NUL-terminated UTF-8 encoded string.
|
|
private String ReadString () {
|
|
StringBuilder b = new StringBuilder();
|
|
for (;;) {
|
|
int c = reader.Read();
|
|
if (c < 0) // EOF?
|
|
return null;
|
|
if (c == 0) // End of String?
|
|
break;
|
|
b.Append((char)c);
|
|
}
|
|
return b.ToString();
|
|
}
|
|
// Read all msgid/msgstr pairs, register them in the ResourceWriter,
|
|
// and write the binary contents to the output stream.
|
|
private void ReadAllInput (ResourceWriter rw) {
|
|
for (;;) {
|
|
String msgid = ReadString();
|
|
if (msgid == null)
|
|
break;
|
|
String msgstr = ReadString();
|
|
if (msgstr == null)
|
|
break;
|
|
rw.AddResource(msgid, msgstr);
|
|
}
|
|
rw.Generate();
|
|
}
|
|
// Read all msgid/msgstr pairs (each string being NUL-terminated and
|
|
// UTF-8 encoded) and write the .resources file to the given filename.
|
|
WriteResource (String filename) {
|
|
Stream input = new BufferedStream(Console.OpenStandardInput());
|
|
reader = new StreamReader(input, new UTF8Encoding());
|
|
if (filename.Equals("-")) {
|
|
BufferedStream output = new BufferedStream(Console.OpenStandardOutput());
|
|
// A temporary output stream is needed because ResourceWriter.Generate
|
|
// expects to be able to seek in the Stream.
|
|
MemoryStream tmpoutput = new MemoryStream();
|
|
ResourceWriter rw = new ResourceWriter(tmpoutput);
|
|
ReadAllInput(rw);
|
|
tmpoutput.WriteTo(output);
|
|
rw.Close();
|
|
output.Close();
|
|
} else {
|
|
ResourceWriter rw = new ResourceWriter(filename);
|
|
ReadAllInput(rw);
|
|
rw.Close();
|
|
}
|
|
}
|
|
public static int Main (String[] args) {
|
|
try {
|
|
new WriteResource(args[0]);
|
|
} catch (Exception e) {
|
|
Console.Error.WriteLine(e);
|
|
Console.Error.WriteLine(e.StackTrace);
|
|
return 1;
|
|
}
|
|
return 0;
|
|
}
|
|
}
|
|
}
|