mirror of
https://github.com/reactos/reactos
synced 2025-10-08 17:32:43 +02:00
Compare commits
22 Commits
backups/us
...
ReactOS-0.
Author | SHA1 | Date | |
---|---|---|---|
|
cab21f1645 | ||
|
e71045efa1 | ||
|
da20aaac90 | ||
|
8561239392 | ||
|
a7319af3dd | ||
|
a19892ea08 | ||
|
f66ca04807 | ||
|
60593571fd | ||
|
5503685d2d | ||
|
9cad93ac31 | ||
|
3a64b132cf | ||
|
791f54a818 | ||
|
9f3de03641 | ||
|
0a3129deb1 | ||
|
45724d8de2 | ||
|
3223773dbc | ||
|
15445b6ebc | ||
|
0fa542f1e0 | ||
|
4bbcb97553 | ||
|
aca728a62f | ||
|
ded6fcca88 | ||
|
6d66d4da2c |
@@ -1,46 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!--
|
||||
Copyright (C) 2005 Casper S. Hornstrup
|
||||
|
||||
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 2 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, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
-->
|
||||
<project name="ReactOS.ApiStatus" default="publish">
|
||||
|
||||
<property name="reactos.dir" value="reactos" />
|
||||
<property name="apistatus.xsl" value="rapistatus.xsl" />
|
||||
<property name="apistatus.xml" value="rapistatus.xml" />
|
||||
<property name="apistatus.html" value="index2.html" />
|
||||
<include buildfile="config.include" />
|
||||
|
||||
<target name="publish">
|
||||
<delete dir="${reactos.dir}" if="${directory::exists(reactos.dir)}" />
|
||||
<exec program="svn" commandline="export -r HEAD ${source.url} ${reactos.dir}" />
|
||||
<exec program="rgenstat" commandline="reactos\apistatus.lst ${apistatus.xml}" />
|
||||
<style style="${apistatus.xsl}" destdir="${reactos.dir}" in="${apistatus.xml}" out="${apistatus.html}" />
|
||||
<copy todir="${publish.dir}" overwrite="true">
|
||||
<fileset basedir=".">
|
||||
<include name="${apistatus.xml}" />
|
||||
<include name="${apistatus.html}" />
|
||||
</fileset>
|
||||
</copy>
|
||||
<delete>
|
||||
<fileset basedir=".">
|
||||
<include name="${apistatus.xml}" />
|
||||
<include name="${apistatus.html}" />
|
||||
</fileset>
|
||||
</delete>
|
||||
<delete dir="${reactos.dir}" if="${directory::exists(reactos.dir)}" />
|
||||
</target>
|
||||
</project>
|
@@ -1,22 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
Copyright (C) 2005 Casper S. Hornstrup
|
||||
|
||||
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 2 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, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
-->
|
||||
<project>
|
||||
<property name="source.url" value="svn://svn.reactos.com/trunk/reactos" />
|
||||
<property name="publish.dir" value="C:\api" />
|
||||
</project>
|
@@ -1,10 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="publishPath" value="c:\iso" /> <!-- c:\iso or ftp://ftp.server.com/iso -->
|
||||
<add key="smtpServer" value="localhost" />
|
||||
<add key="errorEmail" value="mailbox@somewhere-on-the-net" />
|
||||
<add key="makeParameters" value="" />
|
||||
<add key="fastDisk" value="" />
|
||||
</appSettings>
|
||||
</configuration>
|
@@ -1,14 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: AssemblyTitle("ReactOS Sin Custom Revision Action")]
|
||||
[assembly: AssemblyDescription("ReactOS Sin Custom Revision Action")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("ReactOS Project")]
|
||||
[assembly: AssemblyProduct("React Operating System")]
|
||||
[assembly: AssemblyCopyright("Copyright 2005 ReactOS Project")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyDelaySign(false)]
|
||||
[assembly: AssemblyKeyFile("")]
|
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<project name="ReactOS.CustomRevisionAction" default="build">
|
||||
|
||||
<property name="output.dir" value="bin" />
|
||||
|
||||
<target name="build" description="Build component">
|
||||
<mkdir dir="${output.dir}" />
|
||||
<csc target="exe"
|
||||
output="${output.dir}\ReactOS.CustomRevisionAction.exe"
|
||||
optimize="true"
|
||||
debug="true"
|
||||
doc="${output.dir}\ReactOS.CustomRevisionAction.xml"
|
||||
warninglevel="0">
|
||||
<sources>
|
||||
<include name="*.cs" />
|
||||
</sources>
|
||||
</csc>
|
||||
</target>
|
||||
|
||||
</project>
|
File diff suppressed because it is too large
Load Diff
@@ -1,340 +0,0 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Configuration;
|
||||
using System.Web.Mail;
|
||||
|
||||
namespace ReactOS.CustomRevisionAction
|
||||
{
|
||||
public class MainClass
|
||||
{
|
||||
/// <summary>
|
||||
/// Path to store published binaries at.
|
||||
/// </summary>
|
||||
private static string publishPath;
|
||||
|
||||
/// <summary>
|
||||
/// Whether or not to publish ISOs to a remote destination via FTP.
|
||||
/// </summary>
|
||||
private static bool PublishToRemoteFtpLocation
|
||||
{
|
||||
get
|
||||
{
|
||||
return publishPath.StartsWith("ftp://");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Run the application.
|
||||
/// </summary>
|
||||
/// <param name="script">Script to run.</param>
|
||||
/// <param name="args">Arguments to pass to script.</param>
|
||||
/// <param name="workingDirectory">Working directory.</param>
|
||||
/// <param name="standardOutput">Receives standard output.</param>
|
||||
/// <param name="standardError">Receives standard error.</param>
|
||||
/// <returns>
|
||||
/// Exit code.
|
||||
/// </returns>
|
||||
private static int RunScript(string script,
|
||||
string args,
|
||||
string workingDirectory,
|
||||
out string standardOutput,
|
||||
out string standardError)
|
||||
{
|
||||
ProcessStartInfo scriptProcessStartInfo = new ProcessStartInfo(script,
|
||||
args);
|
||||
scriptProcessStartInfo.CreateNoWindow = true;
|
||||
/*
|
||||
* All standard streams must be redirected.
|
||||
* Otherwise DuplicateHandle() will fail.
|
||||
*/
|
||||
scriptProcessStartInfo.RedirectStandardInput = true;
|
||||
scriptProcessStartInfo.RedirectStandardError = true;
|
||||
scriptProcessStartInfo.RedirectStandardOutput = true;
|
||||
scriptProcessStartInfo.UseShellExecute = false;
|
||||
scriptProcessStartInfo.WorkingDirectory = workingDirectory;
|
||||
RedirectableProcess redirectableProcess = new RedirectableProcess(scriptProcessStartInfo);
|
||||
standardOutput = redirectableProcess.ProcessOutput;
|
||||
standardError = redirectableProcess.ProcessError;
|
||||
return redirectableProcess.ExitCode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve value of configuration from configuration file.
|
||||
/// </summary>
|
||||
/// <param name="name">Name of configuration option.</param>
|
||||
/// <param name="defaultValue">
|
||||
/// Default value to be returned if the option does not exist.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// Value of configuration option or null if the option does not
|
||||
/// exist and no default value is provided.
|
||||
/// </returns>
|
||||
private static string GetConfigurationOption(string name,
|
||||
string defaultValue)
|
||||
{
|
||||
if (ConfigurationSettings.AppSettings[name] != null)
|
||||
return ConfigurationSettings.AppSettings[name];
|
||||
else
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Send an email.
|
||||
/// </summary>
|
||||
/// <param name="subject">Subject of the email.</param>
|
||||
/// <param name="body">Content of the email.</param>
|
||||
private static void SendErrorMail(string subject, string body)
|
||||
{
|
||||
try
|
||||
{
|
||||
string smtpServer = GetConfigurationOption("smtpServer", "localhost");
|
||||
string toEmail = GetConfigurationOption("errorEmail", null);
|
||||
if (toEmail == null)
|
||||
return;
|
||||
string fromEmail = GetConfigurationOption("fromEmail", null);
|
||||
if (fromEmail == null)
|
||||
fromEmail = toEmail;
|
||||
MailMessage mm = new MailMessage();
|
||||
mm.Priority = MailPriority.Normal;
|
||||
mm.From = toEmail;
|
||||
mm.To = toEmail;
|
||||
mm.Subject = subject;
|
||||
mm.Body += body;
|
||||
mm.Body += "<br>";
|
||||
mm.BodyFormat = MailFormat.Html;
|
||||
SmtpMail.SmtpServer = smtpServer;
|
||||
SmtpMail.Send(mm);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.Error.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fail with an error message.
|
||||
/// </summary>
|
||||
/// <param name="revision">Repository revision.</param>
|
||||
/// <param name="text">Error message.</param>
|
||||
private static void Fail(int revision,
|
||||
string text)
|
||||
{
|
||||
Console.WriteLine(text);
|
||||
Console.Error.WriteLine(text);
|
||||
SendErrorMail(String.Format("[{0}] ReactOS Publish Error", revision), text);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fail with an error message.
|
||||
/// </summary>
|
||||
/// <param name="text">Error message.</param>
|
||||
private static void Fail(string text)
|
||||
{
|
||||
Console.WriteLine(text);
|
||||
Console.Error.WriteLine(text);
|
||||
SendErrorMail("ReactOS Publish Error", text);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generate filename of distribution.
|
||||
/// </summary>
|
||||
/// <param name="branch">Branch.</param>
|
||||
/// <param name="revision">Revision.</param>
|
||||
private static string GetDistributionFilename(string branch,
|
||||
int revision)
|
||||
{
|
||||
return String.Format("ReactOS-{0}-r{1}.iso",
|
||||
branch,
|
||||
revision);
|
||||
}
|
||||
|
||||
private static void SplitRemotePublishPath(string publishPath,
|
||||
out string server,
|
||||
out string directory)
|
||||
{
|
||||
string searchString = "://";
|
||||
int index = publishPath.IndexOf(searchString);
|
||||
if (index == -1)
|
||||
throw new InvalidOperationException();
|
||||
int endOfProtocolIndex = index + searchString.Length;
|
||||
string withoutProtocol = publishPath.Remove(0, endOfProtocolIndex);
|
||||
index = withoutProtocol.IndexOf("/");
|
||||
if (index == -1)
|
||||
{
|
||||
server = withoutProtocol;
|
||||
directory = "";
|
||||
}
|
||||
else
|
||||
{
|
||||
server = withoutProtocol.Substring(0, index);
|
||||
directory = withoutProtocol.Remove(0, index + 1);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Copy ISO to the (remote) destination.
|
||||
/// </summary>
|
||||
/// <param name="sourceFilename">Name of source ISO file to copy.</param>
|
||||
/// <param name="branch">Branch.</param>
|
||||
/// <param name="revision">Revision.</param>
|
||||
/// <remarks>
|
||||
/// Structure is ftp://ftp.server.com/whereever/<branch>/ReactOS-<branch>-r<revision>.iso.
|
||||
/// </remarks>
|
||||
private static void CopyISOToRemoteFtpDestination(string sourceFilename,
|
||||
string branch,
|
||||
int revision)
|
||||
{
|
||||
string distributionFilename = GetDistributionFilename(branch,
|
||||
revision);
|
||||
string destinationFilename = Path.Combine(Path.GetDirectoryName(sourceFilename),
|
||||
distributionFilename);
|
||||
File.Move(sourceFilename, destinationFilename);
|
||||
string server;
|
||||
string directory;
|
||||
SplitRemotePublishPath(publishPath, out server, out directory);
|
||||
FtpClient ftpClient = new FtpClient(server, "anonymous", "sin@svn.reactos.com");
|
||||
ftpClient.Login();
|
||||
if (directory != "")
|
||||
ftpClient.ChangeDir(directory);
|
||||
/* Create destination directory if it does not already exist */
|
||||
if (!ftpClient.DirectoryExists(branch))
|
||||
ftpClient.MakeDir(branch);
|
||||
ftpClient.ChangeDir(branch);
|
||||
ftpClient.Upload(destinationFilename);
|
||||
ftpClient.Close();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Copy ISO to the (local) destination.
|
||||
/// </summary>
|
||||
/// <param name="sourceFilename">Name of source ISO file to copy.</param>
|
||||
/// <param name="branch">Branch.</param>
|
||||
/// <param name="revision">Revision.</param>
|
||||
/// <remarks>
|
||||
/// Structure is <branch>\ReactOS-<branch>-r<revision>.iso.
|
||||
/// </remarks>
|
||||
private static void CopyISOToLocalDestination(string sourceFilename,
|
||||
string branch,
|
||||
int revision)
|
||||
{
|
||||
string distributionFilename = GetDistributionFilename(branch,
|
||||
revision);
|
||||
string destinationDirectory = Path.Combine(publishPath,
|
||||
branch);
|
||||
string destinationFilename = Path.Combine(destinationDirectory,
|
||||
distributionFilename);
|
||||
if (!Directory.Exists(destinationDirectory))
|
||||
Directory.CreateDirectory(destinationDirectory);
|
||||
File.Copy(sourceFilename,
|
||||
destinationFilename);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Copy ISO to the destination.
|
||||
/// </summary>
|
||||
/// <param name="sourceFilename">Name of source ISO file to copy.</param>
|
||||
/// <param name="branch">Branch.</param>
|
||||
/// <param name="revision">Revision.</param>
|
||||
/// <remarks>
|
||||
/// Structure is <branch>\ReactOS-<branch>-r<revision>.iso.
|
||||
/// </remarks>
|
||||
private static void CopyISOToDestination(string sourceFilename,
|
||||
string branch,
|
||||
int revision)
|
||||
{
|
||||
if (PublishToRemoteFtpLocation)
|
||||
CopyISOToRemoteFtpDestination(sourceFilename, branch, revision);
|
||||
else
|
||||
CopyISOToLocalDestination(sourceFilename, branch, revision);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Publish a revision of ReactOS.
|
||||
/// </summary>
|
||||
/// <param name="text">Error message.</param>
|
||||
private static int Publish(string branch,
|
||||
int revision,
|
||||
string workingDirectory)
|
||||
{
|
||||
string make = "mingw32-make";
|
||||
string makeParameters = GetConfigurationOption("makeParameters", "");
|
||||
string reactosDirectory = Path.Combine(workingDirectory,
|
||||
"reactos");
|
||||
Console.WriteLine(String.Format("ReactOS directory is {0}",
|
||||
reactosDirectory));
|
||||
string standardOutput;
|
||||
string standardError;
|
||||
int exitCode = RunScript(make,
|
||||
makeParameters + " bootcd",
|
||||
reactosDirectory,
|
||||
out standardOutput,
|
||||
out standardError);
|
||||
if (exitCode != 0)
|
||||
{
|
||||
Fail(revision,
|
||||
String.Format("make bootcd failed: (error: {0}) {1}",
|
||||
standardError,
|
||||
standardOutput));
|
||||
return exitCode;
|
||||
}
|
||||
|
||||
string sourceFilename = Path.Combine(reactosDirectory,
|
||||
"ReactOS.iso");
|
||||
if (File.Exists(sourceFilename))
|
||||
CopyISOToDestination(sourceFilename,
|
||||
branch,
|
||||
revision);
|
||||
else
|
||||
{
|
||||
Fail(revision,
|
||||
"make bootcd produced no ReactOS.iso");
|
||||
return exitCode;
|
||||
}
|
||||
|
||||
return exitCode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Program entry point.
|
||||
/// </summary>
|
||||
/// <param name="args">Arguments from command line.</param>
|
||||
/// <remarks>
|
||||
/// If exit code is 0, then the commit was processed successfully.
|
||||
/// If exit code is 1, then the commit was not processed successfully.
|
||||
/// </remarks>
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Environment.ExitCode = 1;
|
||||
|
||||
publishPath = ConfigurationSettings.AppSettings["publishPath"];
|
||||
if (publishPath == null)
|
||||
{
|
||||
Fail("PublishPath option not set.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (args.Length < 3)
|
||||
{
|
||||
Fail("Usage: ReactOS.CustomRevisionAction action branch revision");
|
||||
return;
|
||||
}
|
||||
|
||||
string action = args[0]; /* bootcd */
|
||||
string branch = args[1];
|
||||
int revision = Int32.Parse(args[2]);
|
||||
|
||||
System.Environment.ExitCode = Publish(branch,
|
||||
revision,
|
||||
System.Environment.CurrentDirectory);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Fail(String.Format("Exception: {0}", ex));
|
||||
System.Environment.ExitCode = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,145 +0,0 @@
|
||||
/*
|
||||
* When using the ProcessStartInfo.RedirectStandardXxx properties there is a chance of
|
||||
* the parent and child process blocking due to a race condition. This class handles the
|
||||
* problem.
|
||||
* http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdiagnosticsprocessstartinfoclassredirectstandardoutputtopic.asp
|
||||
*/
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace ReactOS.CustomRevisionAction
|
||||
{
|
||||
/// <summary>
|
||||
/// Process that redirects standard output and standard error streams.
|
||||
/// </summary>
|
||||
public class RedirectableProcess
|
||||
{
|
||||
/// <summary>
|
||||
/// Process.
|
||||
/// </summary>
|
||||
private Process process;
|
||||
|
||||
/// <summary>
|
||||
/// Redirected standard error stream.
|
||||
/// </summary>
|
||||
private string processError;
|
||||
|
||||
/// <summary>
|
||||
/// Redirected standard output stream.
|
||||
/// </summary>
|
||||
private string processOutput;
|
||||
|
||||
/// <summary>
|
||||
/// Exit code.
|
||||
/// </summary>
|
||||
private int exitCode;
|
||||
|
||||
/// <summary>
|
||||
/// Redirected standard error stream.
|
||||
/// </summary>
|
||||
public string ProcessError
|
||||
{
|
||||
get
|
||||
{
|
||||
return processError;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Redirected standard output stream.
|
||||
/// </summary>
|
||||
public string ProcessOutput
|
||||
{
|
||||
get
|
||||
{
|
||||
return processOutput;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Exit code.
|
||||
/// </summary>
|
||||
public int ExitCode
|
||||
{
|
||||
get
|
||||
{
|
||||
return exitCode;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Run an excutable and redirect standard error and/or standard output safely.
|
||||
/// </summary>
|
||||
public RedirectableProcess(ProcessStartInfo processStartInfo)
|
||||
{
|
||||
Run(processStartInfo, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Run an excutable and redirect standard error and/or standard output safely.
|
||||
/// </summary>
|
||||
public RedirectableProcess(ProcessStartInfo processStartInfo, string input)
|
||||
{
|
||||
Run(processStartInfo, input);
|
||||
}
|
||||
|
||||
private void Run(ProcessStartInfo processStartInfo, string input)
|
||||
{
|
||||
process = new Process();
|
||||
process.StartInfo = processStartInfo;
|
||||
process.Start();
|
||||
if (processStartInfo.RedirectStandardInput && input != null)
|
||||
{
|
||||
process.StandardInput.AutoFlush = true;
|
||||
process.StandardInput.WriteLine(input);
|
||||
}
|
||||
Thread readStandardError = null;
|
||||
if (processStartInfo.RedirectStandardError)
|
||||
{
|
||||
readStandardError = new Thread(new ThreadStart(ReadStandardError));
|
||||
readStandardError.Start();
|
||||
}
|
||||
Thread readStandardOutput = null;
|
||||
if (processStartInfo.RedirectStandardOutput)
|
||||
{
|
||||
readStandardOutput = new Thread(new ThreadStart(ReadStandardOutput));
|
||||
readStandardOutput.Start();
|
||||
}
|
||||
if (processStartInfo.RedirectStandardError)
|
||||
{
|
||||
readStandardError.Join();
|
||||
}
|
||||
if (processStartInfo.RedirectStandardOutput)
|
||||
{
|
||||
readStandardOutput.Join();
|
||||
}
|
||||
process.WaitForExit();
|
||||
exitCode = process.ExitCode;
|
||||
process = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read standard error thread entry-point.
|
||||
/// </summary>
|
||||
private void ReadStandardError()
|
||||
{
|
||||
if (process != null)
|
||||
{
|
||||
processError = process.StandardError.ReadToEnd();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read standard output thread entry-point.
|
||||
/// </summary>
|
||||
private void ReadStandardOutput()
|
||||
{
|
||||
if (process != null)
|
||||
{
|
||||
processOutput = process.StandardOutput.ReadToEnd();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,8 +0,0 @@
|
||||
<?php
|
||||
|
||||
/* Rename to config.php */
|
||||
|
||||
define(ISO_BASE_URL, "http://www.server.com/iso/");
|
||||
define(ISO_PATH, "C:\\iso\\");
|
||||
|
||||
?>
|
@@ -1,230 +0,0 @@
|
||||
<?php
|
||||
|
||||
include ('config.php');
|
||||
|
||||
function dm_usort_cmp ($a, $b) {
|
||||
if ($a == $b) return 0;
|
||||
return ($a > $b) ? -1 : 1;
|
||||
}
|
||||
|
||||
function dm_usort_cmp_desc ($a, $b) {
|
||||
if ($a == $b) return 0;
|
||||
return ($a > $b) ? 1 : -1;
|
||||
}
|
||||
|
||||
function printHeader()
|
||||
{
|
||||
?>
|
||||
<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN">
|
||||
<html>
|
||||
<head>
|
||||
<title>ReactOS Revison ISOs</title>
|
||||
<meta name="generator" content="Editpad">
|
||||
<meta name="keywords" content="OS, ReactOS, operating system">
|
||||
<meta name="author" content="ReactOS Project (ros-dev@reactos.com)">
|
||||
<style>
|
||||
.box
|
||||
{
|
||||
padding: 0px;
|
||||
background-color: #88aadd;
|
||||
border-left: 1px solid #f0f0f0;
|
||||
border-right: 1px solid #000000;
|
||||
border-top: 1px solid #f0f0f0;
|
||||
border-bottom: 1px solid #000000;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body bgcolor="#88aadd">
|
||||
<form method="post" action="">
|
||||
<?php
|
||||
}
|
||||
|
||||
function printMenu($revision)
|
||||
{
|
||||
?>
|
||||
<table border="0" class="box" cellpadding="5">
|
||||
<tr>
|
||||
<td height="2px">
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
|
||||
<table border="0" cellpadding="0" cellspacing="0">
|
||||
<tr>
|
||||
<td>
|
||||
<b>Branch:</b>
|
||||
</td>
|
||||
<td>
|
||||
<select name="branch" tabindex="1">
|
||||
<?php
|
||||
|
||||
$d = dir(ISO_PATH);
|
||||
$i = 0;
|
||||
$dirlist = array();
|
||||
while (false !== ($entry = $d->read())) {
|
||||
if ((strcasecmp($entry, ".") != 0) && (strcasecmp($entry, "..") != 0) && is_dir(ISO_PATH . "\\" . $entry) == "dir") {
|
||||
$dirlist[$i++] = $entry;
|
||||
}
|
||||
}
|
||||
$d->close();
|
||||
|
||||
if (is_array($dirlist)) {
|
||||
usort($dirlist, "dm_usort_cmp");
|
||||
reset($dirlist);
|
||||
while (list($key, $val) = each($dirlist)) {
|
||||
$branch = $val;
|
||||
if ($branch == $_POST["branch"] || (!isset($_POST["branch"]) && $branch == "trunk"))
|
||||
$selected = " selected";
|
||||
else
|
||||
$selected = "";
|
||||
echo "<option$selected>$branch</option>";
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
<td>
|
||||
<b>Revision:</b>
|
||||
</td>
|
||||
<td>
|
||||
<?php
|
||||
echo "<input type=\"text\" name=\"revision\" size=\"10\" maxlength=\"10\" tabindex=\"2\" value=\"" . $revision . "\"></input>";
|
||||
?>
|
||||
</td>
|
||||
<td>
|
||||
|
||||
</td>
|
||||
<td>
|
||||
<input type="submit" name="getiso" value="Download" tabindex="3" style="border: 1px solid #000000"></input>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="7">
|
||||
<hr size="2" width="100%" />
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="4">
|
||||
<input type="submit" name="getnextiso" value="Next ISO" tabindex="4" style="border: 1px solid #000000"></input>
|
||||
</td>
|
||||
<td colspan="3" align="right">
|
||||
<input type="submit" name="getlatestiso" value="Latest ISO" tabindex="5" style="border: 1px solid #000000"></input>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td height="2px">
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<?php
|
||||
}
|
||||
|
||||
function printFooter()
|
||||
{
|
||||
?>
|
||||
</form>
|
||||
|
||||
<script>
|
||||
var revision = document.getElementById('revision');
|
||||
if (revision) revision.focus();
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
|
||||
function locateRevisionISO($branch, $revision, $latest)
|
||||
{
|
||||
$revision = intval($revision);
|
||||
$path = ISO_PATH . "\\" . $branch;
|
||||
$d = dir($path);
|
||||
$i = 0;
|
||||
$filelist = array();
|
||||
while (false !== ($entry = $d->read())) {
|
||||
if (is_dir($path . "\\" . $entry) != "dir")
|
||||
$filelist[$i++] = $entry;
|
||||
}
|
||||
$d->close();
|
||||
|
||||
if (is_array($filelist)) {
|
||||
$sortFunction = $latest ? "dm_usort_cmp" : "dm_usort_cmp_desc";
|
||||
usort($filelist, $sortFunction);
|
||||
reset($filelist);
|
||||
while (list($key, $filename) = each($filelist)) {
|
||||
if (ereg('ReactOS-' . $branch . '-r([0-9]*).iso', $filename, $regs))
|
||||
{
|
||||
$thisRevision = intval($regs[1]);
|
||||
if (($latest) && ($thisRevision < $revision))
|
||||
return $regs[1];
|
||||
else if ($thisRevision > $revision)
|
||||
return $regs[1];
|
||||
$lastRevision = $thisRevision;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
function getNextRevisionISO($branch, $revision)
|
||||
{
|
||||
return locateRevisionISO($branch, $revision, false);
|
||||
}
|
||||
|
||||
function getLatestRevisionISO($branch)
|
||||
{
|
||||
return locateRevisionISO($branch, 999999, true);
|
||||
}
|
||||
|
||||
function main()
|
||||
{
|
||||
$branch = $_POST["branch"];
|
||||
$revision = $_POST["revision"];
|
||||
|
||||
$filename = "ReactOS-" . $branch . "-r" . $revision . ".iso";
|
||||
if (file_exists(ISO_PATH . $branch . "\\" . $filename))
|
||||
{
|
||||
$location = ISO_BASE_URL . $branch . "/" . $filename;
|
||||
header("Location: $location");
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
printHeader();
|
||||
printMenu($_POST["revision"]);
|
||||
echo "<br><b>No ISO exist for branch '" . $branch . "' and revision " . $revision . ".</b><br><br>";
|
||||
printFooter();
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($_POST["getiso"]) && !empty($_POST["branch"]) && !empty($_POST["revision"]) && is_numeric($_POST["revision"]))
|
||||
main();
|
||||
else if (!empty($_POST["getnextiso"]) && !empty($_POST["branch"]) && !empty($_POST["revision"]) && is_numeric($_POST["revision"]))
|
||||
{
|
||||
printHeader();
|
||||
printMenu(getNextRevisionISO($_POST["branch"], $_POST["revision"]));
|
||||
printFooter();
|
||||
}
|
||||
else if (!empty($_POST["getlatestiso"]) && !empty($_POST["branch"]))
|
||||
{
|
||||
printHeader();
|
||||
printMenu(getLatestRevisionISO($_POST["branch"]));
|
||||
printFooter();
|
||||
}
|
||||
else
|
||||
{
|
||||
printHeader();
|
||||
printMenu($_POST["revision"]);
|
||||
printFooter();
|
||||
}
|
||||
|
||||
?>
|
@@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<appSettings>
|
||||
<add key="smtpServer" value="localhost" />
|
||||
<add key="errorEmail" value="mailbox@somewhere-on-the-net" />
|
||||
<add key="makeParameters" value="" />
|
||||
<add key="fastDisk" value="" />
|
||||
</appSettings>
|
||||
</configuration>
|
@@ -1,14 +0,0 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: AssemblyTitle("ReactOS Sin Verifier")]
|
||||
[assembly: AssemblyDescription("ReactOS Sin Verifier")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("ReactOS Project")]
|
||||
[assembly: AssemblyProduct("React Operating System")]
|
||||
[assembly: AssemblyCopyright("Copyright 2005 ReactOS Project")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
[assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyDelaySign(false)]
|
||||
[assembly: AssemblyKeyFile("")]
|
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<project name="ReactOS.Verify" default="build">
|
||||
|
||||
<property name="output.dir" value="bin" />
|
||||
|
||||
<target name="build" description="Build component">
|
||||
<mkdir dir="${output.dir}" />
|
||||
<csc target="exe"
|
||||
output="${output.dir}\ReactOS.Verify.exe"
|
||||
optimize="true"
|
||||
debug="true"
|
||||
doc="${output.dir}\ReactOS.Verify.xml"
|
||||
warninglevel="0">
|
||||
<sources>
|
||||
<include name="*.cs" />
|
||||
</sources>
|
||||
</csc>
|
||||
</target>
|
||||
|
||||
</project>
|
@@ -1,279 +0,0 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Configuration;
|
||||
using System.Web.Mail;
|
||||
using System.Collections;
|
||||
using System.Collections.Specialized;
|
||||
|
||||
namespace ReactOS.Verify
|
||||
{
|
||||
public class MainClass
|
||||
{
|
||||
/// <summary>
|
||||
/// Run the application.
|
||||
/// </summary>
|
||||
/// <param name="script">Script to run.</param>
|
||||
/// <param name="args">Arguments to pass to script.</param>
|
||||
/// <param name="workingDirectory">Working directory.</param>
|
||||
/// <param name="standardOutput">Receives standard output.</param>
|
||||
/// <param name="standardError">Receives standard error.</param>
|
||||
/// <returns>
|
||||
/// Exit code.
|
||||
/// </returns>
|
||||
private static int RunScript(string script,
|
||||
string args,
|
||||
string workingDirectory,
|
||||
StringDictionary environmentVarables,
|
||||
out string standardOutput,
|
||||
out string standardError)
|
||||
{
|
||||
ProcessStartInfo scriptProcessStartInfo = new ProcessStartInfo(script,
|
||||
args);
|
||||
scriptProcessStartInfo.CreateNoWindow = true;
|
||||
/*
|
||||
* All standard streams must be redirected.
|
||||
* Otherwise DuplicateHandle() will fail.
|
||||
*/
|
||||
scriptProcessStartInfo.RedirectStandardInput = true;
|
||||
scriptProcessStartInfo.RedirectStandardError = true;
|
||||
scriptProcessStartInfo.RedirectStandardOutput = true;
|
||||
scriptProcessStartInfo.UseShellExecute = false;
|
||||
scriptProcessStartInfo.WorkingDirectory = workingDirectory;
|
||||
if (environmentVarables != null)
|
||||
{
|
||||
foreach (DictionaryEntry de in environmentVarables)
|
||||
scriptProcessStartInfo.EnvironmentVariables.Add(de.Key as string, de.Value as string);
|
||||
}
|
||||
RedirectableProcess redirectableProcess = new RedirectableProcess(scriptProcessStartInfo);
|
||||
standardOutput = redirectableProcess.ProcessOutput;
|
||||
standardError = redirectableProcess.ProcessError;
|
||||
return redirectableProcess.ExitCode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Retrieve value of configuration from configuration file.
|
||||
/// </summary>
|
||||
/// <param name="name">Name of configuration option.</param>
|
||||
/// <param name="defaultValue">
|
||||
/// Default value to be returned if the option does not exist.
|
||||
/// </param>
|
||||
/// <returns>
|
||||
/// Value of configuration option or null if the option does not
|
||||
/// exist and no default value is provided.
|
||||
/// </returns>
|
||||
private static string GetConfigurationOption(string name,
|
||||
string defaultValue)
|
||||
{
|
||||
if (ConfigurationSettings.AppSettings[name] != null)
|
||||
{
|
||||
string s = ConfigurationSettings.AppSettings[name].Trim();
|
||||
return s.Equals(String.Empty) ? defaultValue : s;
|
||||
}
|
||||
else
|
||||
return defaultValue;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Send an email.
|
||||
/// </summary>
|
||||
/// <param name="subject">Subject of the email.</param>
|
||||
/// <param name="body">Content of the email.</param>
|
||||
private static void SendErrorMail(string subject, string body)
|
||||
{
|
||||
try
|
||||
{
|
||||
string smtpServer = GetConfigurationOption("smtpServer", "localhost");
|
||||
string email = GetConfigurationOption("errorEmail", null);
|
||||
if (email == null)
|
||||
return;
|
||||
MailMessage mm = new MailMessage();
|
||||
mm.Priority = MailPriority.Normal;
|
||||
mm.From = email;
|
||||
mm.To = email;
|
||||
mm.Subject = subject;
|
||||
mm.Body += body;
|
||||
mm.Body += "<br>";
|
||||
mm.BodyFormat = MailFormat.Html;
|
||||
SmtpMail.SmtpServer = smtpServer;
|
||||
SmtpMail.Send(mm);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Console.Error.WriteLine(ex.Message);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Fail with an error message.
|
||||
/// </summary>
|
||||
/// <param name="text">Error message.</param>
|
||||
private static void Fail(string text)
|
||||
{
|
||||
Console.WriteLine(text);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Paths to fast disk for temporary files.
|
||||
/// </summary>
|
||||
private static string TemporaryFastDisk
|
||||
{
|
||||
get
|
||||
{
|
||||
string temporaryFastDisk = GetConfigurationOption("temporaryFastDisk", null);
|
||||
if (temporaryFastDisk == null || temporaryFastDisk.Trim().Equals(String.Empty))
|
||||
return null;
|
||||
return temporaryFastDisk.Trim();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Paths to fast disk for intermediate files.
|
||||
/// </summary>
|
||||
private static string IntermediateFastDisk
|
||||
{
|
||||
get
|
||||
{
|
||||
string intermediateFastDisk = GetConfigurationOption("intermediateFastDisk", null);
|
||||
if (intermediateFastDisk == null || intermediateFastDisk.Trim().Equals(String.Empty))
|
||||
return null;
|
||||
return intermediateFastDisk.Trim();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Paths to fast disk for output files.
|
||||
/// </summary>
|
||||
private static string OutputFastDisk
|
||||
{
|
||||
get
|
||||
{
|
||||
string outputFastDisk = GetConfigurationOption("outputFastDisk", null);
|
||||
if (outputFastDisk == null || outputFastDisk.Trim().Equals(String.Empty))
|
||||
return null;
|
||||
return outputFastDisk.Trim();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Return collection of environment variables.
|
||||
/// </summary>
|
||||
/// <returns>Collection of environment variables or null if there is none.</returns>
|
||||
private static StringDictionary GetEnvironmentVarables()
|
||||
{
|
||||
StringDictionary environmentVarables = new StringDictionary();
|
||||
if (TemporaryFastDisk != null)
|
||||
environmentVarables.Add("ROS_TEMPORARY", TemporaryFastDisk);
|
||||
if (IntermediateFastDisk != null)
|
||||
environmentVarables.Add("ROS_INTERMEDIATE", IntermediateFastDisk);
|
||||
if (OutputFastDisk != null)
|
||||
environmentVarables.Add("ROS_OUTPUT", OutputFastDisk);
|
||||
return environmentVarables;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Run make.
|
||||
/// </summary>
|
||||
/// <param name="arguments">Arguments.</param>
|
||||
/// <param name="standardOutput">Receives standard output.</param>
|
||||
/// <param name="standardError">Receives standard error.</param>
|
||||
/// <returns>Make exit code.</returns>
|
||||
private static int RunMake(string arguments,
|
||||
out string standardOutput,
|
||||
out string standardError)
|
||||
{
|
||||
string make = "mingw32-make";
|
||||
string makeParameters = GetConfigurationOption("makeParameters", "");
|
||||
string reactosDirectory = Path.Combine(System.Environment.CurrentDirectory,
|
||||
"reactos");
|
||||
return RunScript(make,
|
||||
makeParameters + " " + arguments,
|
||||
reactosDirectory,
|
||||
GetEnvironmentVarables(),
|
||||
out standardOutput,
|
||||
out standardError);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verify a revision of ReactOS by building it all.
|
||||
/// </summary>
|
||||
private static int VerifyFull()
|
||||
{
|
||||
string standardOutput;
|
||||
string standardError;
|
||||
int exitCode = RunMake("bootcd",
|
||||
out standardOutput,
|
||||
out standardError);
|
||||
if (exitCode != 0)
|
||||
{
|
||||
Fail(String.Format("make bootcd failed: (error: {0}) {1}",
|
||||
standardError,
|
||||
standardOutput));
|
||||
return exitCode;
|
||||
}
|
||||
|
||||
string reactosDirectory = Path.Combine(System.Environment.CurrentDirectory,
|
||||
"reactos");
|
||||
string isoFilename = Path.Combine(reactosDirectory,
|
||||
"ReactOS.iso");
|
||||
if (!File.Exists(isoFilename))
|
||||
Fail("make bootcd produced no ReactOS.iso");
|
||||
|
||||
return exitCode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verify a revision of ReactOS by building parts.
|
||||
/// </summary>
|
||||
/// <param name="components">Comma separated list of components to build.</param>
|
||||
private static int VerifyPartial(string components)
|
||||
{
|
||||
string standardOutput;
|
||||
string standardError;
|
||||
string componentParameters = "\"" + components.Replace(",", "\" \"") + "\"";
|
||||
int exitCode = RunMake(componentParameters,
|
||||
out standardOutput,
|
||||
out standardError);
|
||||
if (exitCode != 0)
|
||||
Fail(String.Format("make failed for targets {0}: (error: {1}) {2}",
|
||||
componentParameters,
|
||||
standardError,
|
||||
standardOutput));
|
||||
return exitCode;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verify a revision of ReactOS.
|
||||
/// </summary>
|
||||
/// <param name="args">Arguments from command line.</param>
|
||||
private static int Verify(string[] args)
|
||||
{
|
||||
if (args.Length > 0)
|
||||
return VerifyPartial(args[0]);
|
||||
else
|
||||
return VerifyFull();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Program entry point.
|
||||
/// </summary>
|
||||
/// <param name="args">Arguments from command line.</param>
|
||||
/// <remarks>
|
||||
/// If exit code is 0, then the commit was processed successfully.
|
||||
/// If exit code is 1, then the commit was not processed successfully.
|
||||
/// </remarks>
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
try
|
||||
{
|
||||
System.Environment.ExitCode = Verify(args);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
string text = String.Format("Exception: {0}", ex);
|
||||
SendErrorMail("ReactOS Verify Error", text);
|
||||
System.Environment.ExitCode = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -1,145 +0,0 @@
|
||||
/*
|
||||
* When using the ProcessStartInfo.RedirectStandardXxx properties there is a chance of
|
||||
* the parent and child process blocking due to a race condition. This class handles the
|
||||
* problem.
|
||||
* http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdiagnosticsprocessstartinfoclassredirectstandardoutputtopic.asp
|
||||
*/
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace ReactOS.Verify
|
||||
{
|
||||
/// <summary>
|
||||
/// Process that redirects standard output and standard error streams.
|
||||
/// </summary>
|
||||
public class RedirectableProcess
|
||||
{
|
||||
/// <summary>
|
||||
/// Process.
|
||||
/// </summary>
|
||||
private Process process;
|
||||
|
||||
/// <summary>
|
||||
/// Redirected standard error stream.
|
||||
/// </summary>
|
||||
private string processError;
|
||||
|
||||
/// <summary>
|
||||
/// Redirected standard output stream.
|
||||
/// </summary>
|
||||
private string processOutput;
|
||||
|
||||
/// <summary>
|
||||
/// Exit code.
|
||||
/// </summary>
|
||||
private int exitCode;
|
||||
|
||||
/// <summary>
|
||||
/// Redirected standard error stream.
|
||||
/// </summary>
|
||||
public string ProcessError
|
||||
{
|
||||
get
|
||||
{
|
||||
return processError;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Redirected standard output stream.
|
||||
/// </summary>
|
||||
public string ProcessOutput
|
||||
{
|
||||
get
|
||||
{
|
||||
return processOutput;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Exit code.
|
||||
/// </summary>
|
||||
public int ExitCode
|
||||
{
|
||||
get
|
||||
{
|
||||
return exitCode;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Run an excutable and redirect standard error and/or standard output safely.
|
||||
/// </summary>
|
||||
public RedirectableProcess(ProcessStartInfo processStartInfo)
|
||||
{
|
||||
Run(processStartInfo, null);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Run an excutable and redirect standard error and/or standard output safely.
|
||||
/// </summary>
|
||||
public RedirectableProcess(ProcessStartInfo processStartInfo, string input)
|
||||
{
|
||||
Run(processStartInfo, input);
|
||||
}
|
||||
|
||||
private void Run(ProcessStartInfo processStartInfo, string input)
|
||||
{
|
||||
process = new Process();
|
||||
process.StartInfo = processStartInfo;
|
||||
process.Start();
|
||||
if (processStartInfo.RedirectStandardInput && input != null)
|
||||
{
|
||||
process.StandardInput.AutoFlush = true;
|
||||
process.StandardInput.WriteLine(input);
|
||||
}
|
||||
Thread readStandardError = null;
|
||||
if (processStartInfo.RedirectStandardError)
|
||||
{
|
||||
readStandardError = new Thread(new ThreadStart(ReadStandardError));
|
||||
readStandardError.Start();
|
||||
}
|
||||
Thread readStandardOutput = null;
|
||||
if (processStartInfo.RedirectStandardOutput)
|
||||
{
|
||||
readStandardOutput = new Thread(new ThreadStart(ReadStandardOutput));
|
||||
readStandardOutput.Start();
|
||||
}
|
||||
if (processStartInfo.RedirectStandardError)
|
||||
{
|
||||
readStandardError.Join();
|
||||
}
|
||||
if (processStartInfo.RedirectStandardOutput)
|
||||
{
|
||||
readStandardOutput.Join();
|
||||
}
|
||||
process.WaitForExit();
|
||||
exitCode = process.ExitCode;
|
||||
process = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read standard error thread entry-point.
|
||||
/// </summary>
|
||||
private void ReadStandardError()
|
||||
{
|
||||
if (process != null)
|
||||
{
|
||||
processError = process.StandardError.ReadToEnd();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Read standard output thread entry-point.
|
||||
/// </summary>
|
||||
private void ReadStandardOutput()
|
||||
{
|
||||
if (process != null)
|
||||
{
|
||||
processOutput = process.StandardOutput.ReadToEnd();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@@ -9,111 +9,59 @@
|
||||
|
||||
#include "File.h"
|
||||
#include "ssprintf.h"
|
||||
#include "trim.h"
|
||||
|
||||
#include "IRCClient.h"
|
||||
#include "config.h"
|
||||
|
||||
using std::string;
|
||||
using std::vector;
|
||||
|
||||
//vector<string> tech, module, dev, stru, period, status, type, func, irql, curse, cursecop;
|
||||
const char* ArchBlackmann = "ArchBlackmann";
|
||||
|
||||
class List
|
||||
vector<string> tech, module, dev, stru, period;
|
||||
|
||||
void ImportList ( vector<string>& list, const char* filename )
|
||||
{
|
||||
public:
|
||||
string name;
|
||||
bool macro;
|
||||
std::vector<std::string> list;
|
||||
string tag;
|
||||
int last;
|
||||
List() { last = -1; }
|
||||
List ( const char* _name, bool _macro ) : name(_name), macro(_macro)
|
||||
{
|
||||
tag = ssprintf("%%%s%%",_name);
|
||||
last = -1;
|
||||
}
|
||||
};
|
||||
|
||||
vector<List> lists;
|
||||
vector<string> ops;
|
||||
|
||||
void ImportList ( const char* listname, bool macro )
|
||||
{
|
||||
lists.push_back ( List ( listname, macro ) );
|
||||
List& list = lists.back();
|
||||
File f ( ssprintf("%s.txt",listname).c_str(), "r" );
|
||||
File f ( filename, "r" );
|
||||
string line;
|
||||
while ( f.next_line ( line, true ) )
|
||||
list.list.push_back ( line );
|
||||
list.push_back ( line );
|
||||
}
|
||||
|
||||
const char* ListRand ( List& list )
|
||||
const char* ListRand ( const vector<string>& list )
|
||||
{
|
||||
vector<string>& l = list.list;
|
||||
if ( !l.size() )
|
||||
{
|
||||
static string nothing;
|
||||
nothing = ssprintf ( "<list '%s' empty>", list.name.c_str() );
|
||||
return nothing.c_str();
|
||||
}
|
||||
else if ( l.size() == 1 )
|
||||
return l[0].c_str();
|
||||
int sel = list.last;
|
||||
while ( sel == list.last )
|
||||
sel = rand()%l.size();
|
||||
list.last = sel;
|
||||
return l[sel].c_str();
|
||||
return list[rand()%list.size()].c_str();
|
||||
}
|
||||
|
||||
const char* ListRand ( int i )
|
||||
string TechReply()
|
||||
{
|
||||
return ListRand ( lists[i] );
|
||||
}
|
||||
|
||||
int GetListIndex ( const char* listname )
|
||||
{
|
||||
for ( int i = 0; i < lists.size(); i++ )
|
||||
{
|
||||
if ( !stricmp ( lists[i].name.c_str(), listname ) )
|
||||
return i;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
List& GetList ( const char* listname )
|
||||
{
|
||||
return lists[GetListIndex(listname)];
|
||||
}
|
||||
|
||||
const char* ListRand ( const char* list )
|
||||
{
|
||||
int i = GetListIndex ( list );
|
||||
if ( i < 0 )
|
||||
return NULL;
|
||||
return ListRand(i);
|
||||
}
|
||||
|
||||
string TaggedReply ( const char* listname )
|
||||
{
|
||||
string t = ListRand(listname);
|
||||
string t = ListRand(tech);
|
||||
string out;
|
||||
const char* p = t.c_str();
|
||||
while ( *p )
|
||||
{
|
||||
if ( *p == '%' )
|
||||
{
|
||||
bool found = false;
|
||||
for ( int i = 0; i < lists.size() && !found; i++ )
|
||||
if ( !strnicmp ( p, "%dev%", 5 ) )
|
||||
{
|
||||
if ( lists[i].macro && !strnicmp ( p, lists[i].tag.c_str(), lists[i].tag.size() ) )
|
||||
{
|
||||
out += ListRand(i);
|
||||
p += lists[i].tag.size();
|
||||
found = true;
|
||||
}
|
||||
out += ListRand(dev);
|
||||
p += 5;
|
||||
}
|
||||
if ( !found )
|
||||
else if ( !strnicmp ( p, "%period%", 8 ) )
|
||||
{
|
||||
out += ListRand(period);
|
||||
p += 8;
|
||||
}
|
||||
else if ( !strnicmp ( p, "%module%", 8 ) )
|
||||
{
|
||||
out += ListRand(module);
|
||||
p += 8;
|
||||
}
|
||||
else if ( !strnicmp ( p, "%stru%", 6 ) )
|
||||
{
|
||||
out += ListRand(stru);
|
||||
p += 6;
|
||||
}
|
||||
else
|
||||
out += *p++;
|
||||
}
|
||||
const char* p2 = strchr ( p, '%' );
|
||||
@@ -128,68 +76,14 @@ string TaggedReply ( const char* listname )
|
||||
return out;
|
||||
}
|
||||
|
||||
string gobble ( string& s, const char* delim )
|
||||
{
|
||||
const char* p = s.c_str();
|
||||
p += strspn ( p, delim );
|
||||
const char* p2 = strpbrk ( p, delim );
|
||||
if ( !p2 ) p2 = p + strlen(p);
|
||||
string out ( p, p2-p );
|
||||
p2 += strspn ( p2, delim );
|
||||
s = string ( p2 );
|
||||
return out;
|
||||
}
|
||||
|
||||
bool isop ( const string& who )
|
||||
{
|
||||
for ( int i = 0; i < ops.size(); i++ )
|
||||
{
|
||||
if ( ops[i] == who )
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
// do custom stuff with the IRCClient from your subclass via the provided callbacks...
|
||||
class MyIRCClient : public IRCClient
|
||||
{
|
||||
File flog;
|
||||
clock_t brake_silence;
|
||||
|
||||
// wait another 30 mins to brake the silence
|
||||
#define NOIDLE brake_silence = clock () + 30 * CLK_TCK * 60
|
||||
|
||||
void CheckIdle ( void )
|
||||
{
|
||||
while (true) // _inRun
|
||||
{
|
||||
while (clock() < brake_silence)
|
||||
Sleep(10000);
|
||||
|
||||
string out = TaggedReply("idle");
|
||||
|
||||
if ( !strnicmp ( out.c_str(), "/me ", 4 ) )
|
||||
Action ( CHANNEL, &out[4] );
|
||||
else
|
||||
PrivMsg ( CHANNEL, out );
|
||||
|
||||
NOIDLE;
|
||||
}
|
||||
}
|
||||
|
||||
static void THREADAPI CallMe ( MyIRCClient* irc )
|
||||
{
|
||||
irc->CheckIdle();
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
MyIRCClient()
|
||||
{
|
||||
NOIDLE;
|
||||
ThreadPool::Instance().Launch ( (ThreadPoolFunc*)MyIRCClient::CallMe, this );
|
||||
flog.open ( "arch.log", "r+" );
|
||||
flog.open ( "arch.log", "w+" );
|
||||
}
|
||||
// see IRCClient.h for documentation on these callbacks...
|
||||
bool OnConnected()
|
||||
@@ -198,33 +92,6 @@ public:
|
||||
}
|
||||
bool OnJoin ( const string& user, const string& channel )
|
||||
{
|
||||
//printf ( "user '%s' joined channel '%s'\n", user.c_str(), channel.c_str() );
|
||||
return true;
|
||||
}
|
||||
bool OnPart ( const std::string& user, const std::string& channel )
|
||||
{
|
||||
std::vector<std::string>::iterator it = ops.begin();
|
||||
for ( ; it != ops.end(); it++ )
|
||||
{
|
||||
if ( *it == user )
|
||||
{
|
||||
printf ( "remove '%s' to ops list\n", user.c_str() );
|
||||
ops.erase ( it );
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool OnNick ( const std::string& oldNick, const std::string& newNick )
|
||||
{
|
||||
for ( int i = 0; i < ops.size(); i++ )
|
||||
{
|
||||
if ( ops[i] == oldNick )
|
||||
{
|
||||
printf ( "op '%s' changed nick to '%s'\n", oldNick.c_str(), newNick.c_str() );
|
||||
ops[i] = newNick;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
bool OnEndChannelUsers ( const string& channel )
|
||||
@@ -233,270 +100,32 @@ public:
|
||||
}
|
||||
bool OnPrivMsg ( const string& from, const string& text )
|
||||
{
|
||||
//flog.flush();
|
||||
printf ( "<%s> %s\n", from.c_str(), text.c_str() );
|
||||
flog.printf ( "<%s> %s\n", from.c_str(), text.c_str() );
|
||||
|
||||
if ( !isop(from) )
|
||||
return PrivMsg ( from, "hey, your tongue doesn't belong there!" );
|
||||
|
||||
else if ( strnicmp ( text.c_str(), "!say ", 5 ) )
|
||||
return PrivMsg ( from, "Talk to me on normal Chanel" );
|
||||
|
||||
string say = trim(&text[5]);
|
||||
|
||||
if ( !strnicmp ( say.c_str(), "/me ", 4 ) )
|
||||
return Action ( CHANNEL, trim(&say[4]) );
|
||||
else
|
||||
return PrivMsg ( CHANNEL, trim(say) );
|
||||
return PrivMsg ( from, "hey, your tongue doesn't belong there!" );
|
||||
}
|
||||
bool OnChannelMsg ( const string& channel, const string& from, const string& text )
|
||||
{
|
||||
fflush ( flog );
|
||||
printf ( "%s <%s> %s\n", channel.c_str(), from.c_str(), text.c_str() );
|
||||
flog.printf ( "%s <%s> %s\n", channel.c_str(), from.c_str(), text.c_str() );
|
||||
NOIDLE; // add 30 mins till idle
|
||||
|
||||
bool found_name = false;
|
||||
string text2 ( text );
|
||||
string text2(text);
|
||||
strlwr ( &text2[0] );
|
||||
|
||||
if ( !strnicmp ( text.c_str(), BOTNAME, strlen(BOTNAME) ) )
|
||||
found_name = true;
|
||||
|
||||
string s ( text );
|
||||
|
||||
if ( found_name )
|
||||
gobble ( s, " \t" ); // remove bot name
|
||||
|
||||
// command
|
||||
if ( s[0] == '!' )
|
||||
if ( !strnicmp ( text2.c_str(), ArchBlackmann, strlen(ArchBlackmann) ) )
|
||||
{
|
||||
bool from_op = isop(from);
|
||||
string cmd = gobble ( s, " \t" );
|
||||
|
||||
// from all
|
||||
if ( false && cmd == "!svn" && from == "TechBot" ) // || cmd == "!help" && !TechBotOnline
|
||||
{
|
||||
PrivMsg ( channel, "For my help try !what." );
|
||||
}
|
||||
|
||||
// from normel user
|
||||
else if ( !from_op )
|
||||
{
|
||||
if ( cmd == "!grovel" )
|
||||
{
|
||||
string out = ssprintf(TaggedReply("nogrovel").c_str(),from.c_str());
|
||||
if ( !strnicmp ( out.c_str(), "/me ", 4 ) )
|
||||
return Action ( channel, &out[4] );
|
||||
else
|
||||
return PrivMsg ( channel, out );
|
||||
}
|
||||
|
||||
else if ( cmd == "!what" )
|
||||
{
|
||||
return PrivMsg ( channel, ssprintf("For you, %s, I only support the \"!grovel\" command.", from.c_str()).c_str() );
|
||||
}
|
||||
|
||||
else if ( cmd == "!grovel" || cmd == "!kiss" || cmd == "!hug"
|
||||
|| cmd == "!give" || cmd == "!what" || cmd == "!add" || cmd == "!remove" )
|
||||
{
|
||||
PrivMsg ( channel, ssprintf("%s: I only take commands from ops",from.c_str()) );
|
||||
}
|
||||
}
|
||||
|
||||
// from op
|
||||
else if ( cmd == "!grovel" )
|
||||
{
|
||||
string out = ssprintf(TaggedReply("grovel").c_str(),from.c_str());
|
||||
if ( !strnicmp ( out.c_str(), "/me ", 4 ) )
|
||||
return Action ( channel, &out[4] );
|
||||
else
|
||||
return PrivMsg ( channel, out );
|
||||
}
|
||||
else if ( cmd == "!kiss" )
|
||||
{
|
||||
if ( s.size() )
|
||||
return Action ( channel, ssprintf("kisses %s",s.c_str()) );
|
||||
else
|
||||
return PrivMsg ( channel, ssprintf("%s: huh?",from.c_str()) );
|
||||
}
|
||||
else if ( cmd == "!hug" )
|
||||
{
|
||||
if ( s.size() )
|
||||
return Action ( channel, ssprintf("hugs %s",s.c_str()) );
|
||||
else
|
||||
return PrivMsg ( channel, ssprintf("%s: huh?",from.c_str()) );
|
||||
}
|
||||
else if ( cmd == "!give" )
|
||||
{
|
||||
string who = gobble(s," \t");
|
||||
if ( who.size() && s.size() )
|
||||
return Action ( channel, ssprintf("gives %s a %s",who.c_str(),s.c_str()) );
|
||||
else
|
||||
return PrivMsg ( channel, ssprintf("%s: huh?",from.c_str()) );
|
||||
}
|
||||
else if ( cmd == "!what" )
|
||||
{
|
||||
PrivMsg ( channel, "For ops I support the following commands:" );
|
||||
PrivMsg ( channel, "!grovel" );
|
||||
PrivMsg ( channel, "!kiss" );
|
||||
PrivMsg ( channel, "!hug" );
|
||||
PrivMsg ( channel, "!give" );
|
||||
PrivMsg ( channel, "!say (the input is a private message)" );
|
||||
PrivMsg ( channel, "!add" );
|
||||
PrivMsg ( channel, "!remove" );
|
||||
PrivMsg ( channel, " - for more info see wiki" );
|
||||
}
|
||||
else if ( cmd == "!add" )
|
||||
{
|
||||
string listname = gobble ( s, " \t" );
|
||||
int i = GetListIndex ( listname.c_str() );
|
||||
if ( i == -1 )
|
||||
return PrivMsg ( channel, ssprintf("%s: I don't have a list named '%s'",from.c_str(),listname.c_str()) );
|
||||
List& list = lists[i];
|
||||
if ( s[0] == '\"' || s[0] == '\'' )
|
||||
{
|
||||
char delim = s[0];
|
||||
const char* p = &s[1];
|
||||
const char* p2 = strchr ( p, delim );
|
||||
if ( !p2 )
|
||||
return PrivMsg ( channel, ssprintf("%s: Couldn't add, unmatched quotes",from.c_str()) );
|
||||
s = string ( p, p2-p );
|
||||
}
|
||||
for ( i = 0; i < list.list.size(); i++ )
|
||||
{
|
||||
if ( list.list[i] == s )
|
||||
return PrivMsg ( channel, ssprintf("%s: entry already exists in list '%s'",from.c_str(),listname.c_str()) );
|
||||
}
|
||||
if ( !stricmp ( listname.c_str(), "curse" ) )
|
||||
strlwr ( &s[0] );
|
||||
list.list.push_back ( s );
|
||||
{
|
||||
File f ( ssprintf("%s.txt",list.name.c_str()), "w" );
|
||||
for ( i = 0; i < list.list.size(); i++ )
|
||||
f.printf ( "%s\n", list.list[i].c_str() );
|
||||
}
|
||||
return PrivMsg ( channel, ssprintf("%s: entry added to list '%s'",from.c_str(),listname.c_str()) );
|
||||
}
|
||||
else if ( cmd == "!remove" )
|
||||
{
|
||||
string listname = gobble ( s, " \t" );
|
||||
int i = GetListIndex ( listname.c_str() );
|
||||
if ( i == -1 )
|
||||
return PrivMsg ( channel, ssprintf("%s: I don't have a list named '%s'",from.c_str(),listname.c_str()) );
|
||||
List& list = lists[i];
|
||||
if ( s[0] == '\"' || s[0] == '\'' )
|
||||
{
|
||||
char delim = s[0];
|
||||
const char* p = &s[1];
|
||||
const char* p2 = strchr ( p, delim );
|
||||
if ( !p2 )
|
||||
return PrivMsg ( channel, ssprintf("%s: Couldn't add, unmatched quotes",from.c_str()) );
|
||||
s = string ( p, p2-p );
|
||||
}
|
||||
std::vector<std::string>::iterator it = list.list.begin();
|
||||
for ( ; it != list.list.end(); it++ )
|
||||
{
|
||||
if ( *it == s )
|
||||
{
|
||||
list.list.erase ( it );
|
||||
{
|
||||
File f ( ssprintf("%s.txt",list.name.c_str()), "w" );
|
||||
it = list.list.begin();
|
||||
for ( ; it < list.list.end(); it++ )
|
||||
f.printf ( "%s\n", it->c_str() );
|
||||
}
|
||||
return PrivMsg ( channel, ssprintf("%s: entry removed from list '%s'",from.c_str(),listname.c_str()) );
|
||||
}
|
||||
}
|
||||
return PrivMsg ( channel, ssprintf("%s: entry doesn't exist in list '%s'",from.c_str(),listname.c_str()) );
|
||||
}
|
||||
else
|
||||
{
|
||||
if (found_name)
|
||||
return PrivMsg ( channel, ssprintf("%s: huh?",from.c_str()) );
|
||||
}
|
||||
|
||||
} // if (command)
|
||||
|
||||
bool found_curse = false;
|
||||
static vector<string>& curse = GetList("curse").list;
|
||||
text2 = " " + text2 + " ";
|
||||
|
||||
for ( int i = 0; i < curse.size() && !found_curse; i++ )
|
||||
{
|
||||
if ( strstr ( text2.c_str(), curse[i].c_str() ) )
|
||||
found_curse = true;
|
||||
}
|
||||
if ( found_curse )
|
||||
{
|
||||
static List& cursecop = GetList("cursecop");
|
||||
return PrivMsg ( channel, ssprintf("%s: %s", from.c_str(), ListRand(cursecop)) );
|
||||
}
|
||||
|
||||
string botname (BOTNAME);
|
||||
strlwr ( &botname[0] );
|
||||
//botname = " " + botname + " ";
|
||||
|
||||
if ( strstr(text2.c_str(), botname.c_str()) || strstr(text2.c_str(), " arch ") || found_name )
|
||||
{
|
||||
string out = ssprintf("%s: %s", from.c_str(), TaggedReply("tech").c_str());
|
||||
flog.printf ( "TECH-REPLY: %s\n", out.c_str() );
|
||||
if ( !strnicmp ( out.c_str(), "/me ", 4 ) )
|
||||
return Action ( channel, &out[4] );
|
||||
else
|
||||
return PrivMsg ( channel, out );
|
||||
string reply = ssprintf("%s: %s", from.c_str(), TechReply().c_str());
|
||||
flog.printf ( "TECH-REPLY: %s\n", reply.c_str() );
|
||||
return PrivMsg ( channel, reply );
|
||||
}
|
||||
return true;
|
||||
|
||||
} // On Chanel Message
|
||||
|
||||
}
|
||||
bool OnChannelMode ( const string& channel, const string& mode )
|
||||
{
|
||||
//printf ( "OnChannelMode(%s,%s)\n", channel.c_str(), mode.c_str() );
|
||||
return true;
|
||||
}
|
||||
bool OnUserModeInChannel ( const string& src, const string& channel, const string& mode, const string& target )
|
||||
bool OnUserModeInChannel ( const string& src, const string& channel, const string& user, const string& mode )
|
||||
{
|
||||
printf ( "OnUserModeInChannel(%s,%s,%s,%s)\n", src.c_str(), channel.c_str(), mode.c_str(), target.c_str() );
|
||||
const char* p = mode.c_str();
|
||||
if ( !p )
|
||||
return true;
|
||||
while ( *p )
|
||||
{
|
||||
switch ( *p++ )
|
||||
{
|
||||
case '+':
|
||||
while ( *p != 0 && *p != ' ' )
|
||||
{
|
||||
if ( *p == 'o' )
|
||||
{
|
||||
printf ( "adding '%s' to ops list\n", target.c_str() );
|
||||
ops.push_back ( target );
|
||||
}
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case '-':
|
||||
while ( *p != 0 && *p != ' ' )
|
||||
{
|
||||
if ( *p == 'o' )
|
||||
{
|
||||
std::vector<std::string>::iterator it = ops.begin();
|
||||
for ( ; it != ops.end(); it++ )
|
||||
{
|
||||
if ( *it == target )
|
||||
{
|
||||
printf ( "remove '%s' to ops list\n", target.c_str() );
|
||||
ops.erase ( it );
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//printf ( "OnUserModeInChannel(%s,%s%s,%s)\n", src.c_str(), channel.c_str(), user.c_str(), mode.c_str() );
|
||||
return true;
|
||||
}
|
||||
bool OnMode ( const string& user, const string& mode )
|
||||
@@ -506,103 +135,64 @@ public:
|
||||
}
|
||||
bool OnChannelUsers ( const string& channel, const vector<string>& users )
|
||||
{
|
||||
//printf ( "[%s has %i users]: ", channel.c_str(), users.size() );
|
||||
printf ( "[%s has %i users]: ", channel.c_str(), users.size() );
|
||||
for ( int i = 0; i < users.size(); i++ )
|
||||
{
|
||||
if ( users[i][0] == '@' )
|
||||
ops.push_back ( &users[i][1] );
|
||||
/*if ( i )
|
||||
if ( i )
|
||||
printf ( ", " );
|
||||
printf ( "%s", users[i].c_str() );*/
|
||||
printf ( "%s", users[i].c_str() );
|
||||
}
|
||||
//printf ( "\n" );
|
||||
printf ( "\n" );
|
||||
return true;
|
||||
}
|
||||
bool OnKick ( void )
|
||||
{
|
||||
Join(CHANNEL);
|
||||
return true;
|
||||
}
|
||||
bool OnBanned ( const std::string& channel )
|
||||
{
|
||||
Sleep(10000);
|
||||
return Join(CHANNEL);
|
||||
}
|
||||
};
|
||||
|
||||
int main ( int argc, char** argv )
|
||||
{
|
||||
srand ( time(NULL) );
|
||||
ImportList ( tech, "tech.txt" );
|
||||
ImportList ( stru, "stru.txt" );
|
||||
ImportList ( dev, "dev.txt" );
|
||||
ImportList ( period, "period.txt" );
|
||||
ImportList ( module, "module.txt" );
|
||||
|
||||
ImportList ( "dev", true );
|
||||
ImportList ( "func", true );
|
||||
ImportList ( "dev", true );
|
||||
ImportList ( "func", true );
|
||||
ImportList ( "irql", true );
|
||||
ImportList ( "module", true );
|
||||
ImportList ( "period", true );
|
||||
ImportList ( "status", true );
|
||||
ImportList ( "stru", true );
|
||||
ImportList ( "type", true );
|
||||
|
||||
ImportList ( "tech", false );
|
||||
ImportList ( "curse", false );
|
||||
ImportList ( "cursecop", false );
|
||||
ImportList ( "grovel", false );
|
||||
ImportList ( "nogrovel", false );
|
||||
ImportList ( "idle", false );
|
||||
|
||||
#ifdef _DEBUG
|
||||
printf ( "initializing IRCClient debugging\n" );
|
||||
IRCClient::SetDebug ( true );
|
||||
#endif//_DEBUG
|
||||
|
||||
while (true)
|
||||
printf ( "calling suStartup()\n" );
|
||||
suStartup();
|
||||
printf ( "creating IRCClient object\n" );
|
||||
MyIRCClient irc;
|
||||
printf ( "connecting to freenode\n" );
|
||||
if ( !irc.Connect ( "212.204.214.114" ) ) // irc.freenode.net
|
||||
{
|
||||
printf ( "calling suStartup()\n" );
|
||||
suStartup();
|
||||
printf ( "creating IRCClient object\n" );
|
||||
MyIRCClient irc;
|
||||
printf ( "connecting to freenode\n" );
|
||||
|
||||
if ( !irc.Connect ( SERVER ) ) // irc.freenode.net
|
||||
{
|
||||
printf ( "couldn't connect to server\n" );
|
||||
Sleep(10000);
|
||||
continue;
|
||||
}
|
||||
printf ( "sending user command\n" );
|
||||
if ( !irc.User ( BOTNAME, "reactos.com", SERVER, "ArchBlackmann" ) )
|
||||
{
|
||||
printf ( "USER command failed, retying ...\n" );
|
||||
Sleep(10000);
|
||||
continue;
|
||||
}
|
||||
printf ( "sending nick\n" );
|
||||
if ( !irc.Nick ( BOTNAME ) )
|
||||
{
|
||||
printf ( "NICK command failed, retying ...\n" );
|
||||
Sleep(10000);
|
||||
continue;
|
||||
}
|
||||
printf ( "setting mode\n" );
|
||||
if ( !irc.Mode ( MODE ) )
|
||||
{
|
||||
printf ( "MODE command failed, retying ...\n" );
|
||||
Sleep(10000);
|
||||
continue;
|
||||
}
|
||||
printf ( "joining channel\n" );
|
||||
if ( !irc.Join ( CHANNEL ) )
|
||||
{
|
||||
printf ( "JOIN command failed, retying ...\n" );
|
||||
Sleep(10000);
|
||||
continue;
|
||||
}
|
||||
|
||||
printf ( "entering irc client processor\n" );
|
||||
irc.Run ( false ); // do the processing in this thread...
|
||||
printf ( "couldn't connect to server\n" );
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf ( "sending user command\n" );
|
||||
if ( !irc.User ( "ArchBlackmann", "", "irc.freenode.net", "Arch Blackmann" ) )
|
||||
{
|
||||
printf ( "USER command failed\n" );
|
||||
return -1;
|
||||
}
|
||||
printf ( "sending nick\n" );
|
||||
if ( !irc.Nick ( "ArchBlackmann" ) )
|
||||
{
|
||||
printf ( "NICK command failed\n" );
|
||||
return -1;
|
||||
}
|
||||
printf ( "setting mode\n" );
|
||||
if ( !irc.Mode ( "+i" ) )
|
||||
{
|
||||
printf ( "MODE command failed\n" );
|
||||
return -1;
|
||||
}
|
||||
printf ( "joining #ReactOS\n" );
|
||||
if ( !irc.Join ( "#ReactOS" ) )
|
||||
{
|
||||
printf ( "JOIN command failed\n" );
|
||||
return -1;
|
||||
}
|
||||
printf ( "entering irc client processor\n" );
|
||||
irc.Run ( false ); // do the processing in this thread...
|
||||
return 0;
|
||||
}
|
||||
|
@@ -110,10 +110,6 @@ SOURCE=.\chomp.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\config.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\cram_md5.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
@@ -14,8 +14,8 @@
|
||||
#define nelem(x) ( sizeof(x) / sizeof(x[0]) )
|
||||
#endif//nelem
|
||||
|
||||
typedef File::filesize_t filesize_t;
|
||||
typedef File::fileoff_t fileoff_t;
|
||||
using File::filesize_t;
|
||||
using File::fileoff_t;
|
||||
|
||||
|
||||
fileoff_t File::seek ( fileoff_t offset )
|
||||
|
@@ -18,7 +18,7 @@
|
||||
class File
|
||||
{
|
||||
public:
|
||||
#ifdef WIN32
|
||||
#ifdef _MSC_VER
|
||||
typedef __int64 fileoff_t;
|
||||
typedef unsigned __int64 filesize_t;
|
||||
#else//_MSC_VER
|
||||
|
@@ -10,13 +10,12 @@
|
||||
#include <sstream>
|
||||
|
||||
#include "IRCClient.h"
|
||||
#include "MD5.h"
|
||||
#include "md5.h"
|
||||
#include "cram_md5.h"
|
||||
#include "trim.h"
|
||||
#include "chomp.h"
|
||||
#include "SplitJoin.h"
|
||||
#include "base64.h"
|
||||
#include "config.h"
|
||||
|
||||
using std::string;
|
||||
using std::stringstream;
|
||||
@@ -24,8 +23,6 @@ using std::vector;
|
||||
|
||||
bool IRCClient::_debug = true;
|
||||
|
||||
// see rfc1459 for IRC-Protocoll Reference
|
||||
|
||||
IRCClient::IRCClient()
|
||||
: _timeout(10*60*1000), _inRun(false)
|
||||
{
|
||||
@@ -54,9 +51,7 @@ bool
|
||||
IRCClient::Nick ( const string& nick )
|
||||
{
|
||||
_nick = nick;
|
||||
Send ( "NICK " + _nick + "\n" );
|
||||
PrivMsg ("NickServ", "IDENTIFY " + (string)PASS);
|
||||
return true;
|
||||
return Send ( "NICK " + _nick + "\n" );
|
||||
}
|
||||
|
||||
bool
|
||||
@@ -80,19 +75,13 @@ IRCClient::Mode ( const string& channel, const string& mode, const string& targe
|
||||
bool
|
||||
IRCClient::Join ( const string& channel )
|
||||
{
|
||||
return Send("JOIN " + channel + "\n");
|
||||
return Send ( "JOIN " + channel + "\n" );
|
||||
}
|
||||
|
||||
bool
|
||||
IRCClient::PrivMsg ( const string& to, const string& text )
|
||||
{
|
||||
return Send ( "PRIVMSG " + to + " :" + text + '\n' );
|
||||
}
|
||||
|
||||
bool
|
||||
IRCClient::Action ( const string& to, const string& text )
|
||||
{
|
||||
return Send ( "PRIVMSG " + to + " :" + (char)1 + "ACTION " + text + (char)1 + '\n' );
|
||||
return Send ( "PRIVMSG " + to + " :" + text + "\n" );
|
||||
}
|
||||
|
||||
bool
|
||||
@@ -150,7 +139,7 @@ int IRCClient::Run ( bool launch_thread )
|
||||
{
|
||||
ThreadPool::Instance().Launch ( (ThreadPoolFunc*)IRCClient::Callback, this );
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
_inRun = true;
|
||||
if ( _debug ) printf ( "IRCClient::Run() - waiting for responses\n" );
|
||||
string buf;
|
||||
@@ -237,41 +226,10 @@ int IRCClient::Run ( bool launch_thread )
|
||||
printf ( "!!!:OnRecv failure 5 (PRIVMSG w/o target): %s", buf.c_str() );
|
||||
continue;
|
||||
}
|
||||
if ( *p == 1 )
|
||||
{
|
||||
p++;
|
||||
p2 = strchr ( p, ' ' );
|
||||
if ( !p2 ) p2 = p + strlen(p);
|
||||
cmd = string ( p, p2-p );
|
||||
strlwr ( &cmd[0] );
|
||||
p = p2 + 1;
|
||||
p2 = strchr ( p, 1 );
|
||||
if ( !p2 )
|
||||
{
|
||||
printf ( "!!!:OnRecv failure 6 (no terminating \x01 for initial \x01 found: %s", buf.c_str() );
|
||||
continue;
|
||||
}
|
||||
text = string ( p, p2-p );
|
||||
if ( cmd == "action" )
|
||||
{
|
||||
if ( tgt[0] == '#' )
|
||||
OnChannelAction ( tgt, src, text );
|
||||
else
|
||||
OnPrivAction ( src, text );
|
||||
}
|
||||
else
|
||||
{
|
||||
printf ( "!!!:OnRecv failure 7 (unrecognized \x01 command '%s': %s", cmd.c_str(), buf.c_str() );
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if ( tgt[0] == '#' )
|
||||
OnChannelMsg ( tgt, src, text );
|
||||
else
|
||||
{
|
||||
if ( tgt[0] == '#' )
|
||||
OnChannelMsg ( tgt, src, text );
|
||||
else
|
||||
OnPrivMsg ( src, text );
|
||||
}
|
||||
OnPrivMsg ( src, text );
|
||||
}
|
||||
else if ( cmd == "mode" )
|
||||
{
|
||||
@@ -279,53 +237,38 @@ int IRCClient::Run ( bool launch_thread )
|
||||
//printf ( "[MODE] src='%s' cmd='%s' tgt='%s' text='%s'", src.c_str(), cmd.c_str(), tgt.c_str(), text.c_str() );
|
||||
//OnMode (
|
||||
// self mode change:
|
||||
// [MODE] src=Nick cmd=mode tgt=Nick text=+i
|
||||
// [MODE] src=Relic3_14 cmd=mode tgt=Relic3_14 text=+i
|
||||
// channel mode change:
|
||||
// [MODE] src=Nick cmd=mode tgt=#Channel text=+o Nick
|
||||
// [MODE] src=Royce3 cmd=mode tgt=#Royce3 text=+o Relic3_14
|
||||
if ( tgt[0] == '#' )
|
||||
{
|
||||
p = text.c_str();
|
||||
p2 = strchr ( p, ' ' );
|
||||
if ( p2 && *p2 )
|
||||
if ( !p2 )
|
||||
OnChannelMode ( tgt, text );
|
||||
else
|
||||
{
|
||||
string mode ( p, p2-p );
|
||||
string user ( p, p2-p );
|
||||
p = p2 + 1;
|
||||
p += strspn ( p, " " );
|
||||
OnUserModeInChannel ( src, tgt, mode, trim(p) );
|
||||
OnUserModeInChannel ( src, tgt, user, p );
|
||||
}
|
||||
else
|
||||
OnChannelMode ( tgt, text );
|
||||
}
|
||||
else
|
||||
OnMode ( tgt, text );
|
||||
}
|
||||
else if ( cmd == "join" )
|
||||
{
|
||||
mychannel = text;
|
||||
OnJoin ( src, text );
|
||||
}
|
||||
else if ( cmd == "part" )
|
||||
{
|
||||
OnPart ( src, text );
|
||||
}
|
||||
else if ( cmd == "nick" )
|
||||
{
|
||||
OnNick ( src, text );
|
||||
}
|
||||
else if ( cmd == "kick" )
|
||||
{
|
||||
OnKick ();
|
||||
}
|
||||
else if ( isdigit(cmd[0]) )
|
||||
{
|
||||
int i = atoi(cmd.c_str());
|
||||
switch ( i )
|
||||
{
|
||||
|
||||
case 1: // "Welcome!" - i.e. it's okay to issue commands now...
|
||||
OnConnected();
|
||||
break;
|
||||
|
||||
case 353: // user list for channel....
|
||||
{
|
||||
p = text.c_str();
|
||||
@@ -348,7 +291,6 @@ int IRCClient::Run ( bool launch_thread )
|
||||
OnChannelUsers ( channel, users );
|
||||
}
|
||||
break;
|
||||
|
||||
case 366: // END of user list for channel
|
||||
{
|
||||
p = text.c_str();
|
||||
@@ -358,38 +300,6 @@ int IRCClient::Run ( bool launch_thread )
|
||||
OnEndChannelUsers ( channel );
|
||||
}
|
||||
break;
|
||||
|
||||
case 474: // You are banned
|
||||
{
|
||||
p = text.c_str();
|
||||
p2 = strpbrk ( p, " :" );
|
||||
if ( !p2 ) continue;
|
||||
string channel ( p, p2-p );
|
||||
OnBanned ( channel );
|
||||
}
|
||||
break;
|
||||
|
||||
case 433: // Nick in Use
|
||||
{
|
||||
string nick = _nick;
|
||||
Nick (nick + "_");
|
||||
|
||||
PrivMsg ("NickServ", "GHOST " + nick + " " + PASS);
|
||||
|
||||
// HACK HACK HACK
|
||||
Mode ( "+i" );
|
||||
Join ( CHANNEL ); // this is because IRC client does not review if his commands were sucessfull
|
||||
|
||||
Sleep ( 1000 );
|
||||
Nick ( nick );
|
||||
}
|
||||
break;
|
||||
|
||||
case 2: //MOTD
|
||||
case 376: //MOTD
|
||||
case 372:
|
||||
break;
|
||||
|
||||
default:
|
||||
if ( _debug ) printf ( "unknown command %i: %s", i, buf.c_str() );
|
||||
break;
|
||||
@@ -397,13 +307,7 @@ int IRCClient::Run ( bool launch_thread )
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( strstr ( buf.c_str(), "ACTION" ) )
|
||||
{
|
||||
printf ( "ACTION: " );
|
||||
for ( int i = 0; i < buf.size(); i++ )
|
||||
printf ( "%c(%xh)", buf[i], (unsigned)(unsigned char)buf[i] );
|
||||
}
|
||||
else if ( _debug ) printf ( "unrecognized ':' response: %s", buf.c_str() );
|
||||
if ( _debug ) printf ( "unrecognized ':' response: %s", buf.c_str() );
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@@ -12,11 +12,9 @@
|
||||
|
||||
class IRCClient : public suBufferedRecvSocket
|
||||
{
|
||||
|
||||
public:
|
||||
IRCClient();
|
||||
|
||||
std::string mychannel;
|
||||
static bool GetDebug() { return _debug; }
|
||||
static bool SetDebug ( bool debug ) { bool old = _debug; _debug = debug; return old; }
|
||||
|
||||
@@ -50,9 +48,6 @@ public:
|
||||
// send message to someone or some channel
|
||||
bool PrivMsg ( const std::string& to, const std::string& text );
|
||||
|
||||
// send /me to someone or some channel
|
||||
bool Action ( const std::string& to, const std::string& text );
|
||||
|
||||
// leave a channel
|
||||
bool Part ( const std::string& channel, const std::string& text );
|
||||
|
||||
@@ -64,51 +59,32 @@ public:
|
||||
// OnConnected: you just successfully logged into irc server
|
||||
virtual bool OnConnected() = 0;
|
||||
|
||||
virtual bool OnNick ( const std::string& oldNick, const std::string& newNick ) { return true; }
|
||||
|
||||
// OnJoin: someone just successfully joined a channel you are in ( also sent when you successfully join a channel )
|
||||
virtual bool OnJoin ( const std::string& user, const std::string& channel ) { return true; }
|
||||
|
||||
// OnPart: someone just left a channel you are in
|
||||
virtual bool OnPart ( const std::string& user, const std::string& channel ) { return true; }
|
||||
// OnJoin: you just successfully joined this channel
|
||||
virtual bool OnJoin ( const std::string& user, const std::string& channel ) = 0;
|
||||
|
||||
// OnPrivMsg: you just received a private message from a user
|
||||
virtual bool OnPrivMsg ( const std::string& from, const std::string& text ) { return true; }
|
||||
|
||||
virtual bool OnPrivAction ( const std::string& from, const std::string& text ) { return true; }
|
||||
virtual bool OnPrivMsg ( const std::string& from, const std::string& text ) = 0;
|
||||
|
||||
// OnChannelMsg: you just received a chat line in a channel
|
||||
virtual bool OnChannelMsg ( const std::string& channel, const std::string& from,
|
||||
const std::string& text ) { return true; }
|
||||
|
||||
// OnChannelAction: you just received a "/me" line in a channel
|
||||
virtual bool OnChannelAction ( const std::string& channel, const std::string& from,
|
||||
const std::string& text ) { return true; }
|
||||
const std::string& text ) = 0;
|
||||
|
||||
// OnChannelMode: notification of a change of a channel's mode
|
||||
virtual bool OnChannelMode ( const std::string& channel, const std::string& mode )
|
||||
{ return true; }
|
||||
virtual bool OnChannelMode ( const std::string& channel, const std::string& mode ) = 0;
|
||||
|
||||
// OnUserModeInChannel: notification of a mode change of a user with respect to a channel.
|
||||
// f.ex.: this will be called when someone is oped in a channel.
|
||||
virtual bool OnUserModeInChannel ( const std::string& src, const std::string& channel,
|
||||
const std::string& mode, const std::string& target ) { return true; }
|
||||
const std::string& user, const std::string& mode ) = 0;
|
||||
|
||||
// OnMode: you will receive this when you change your own mode, at least...
|
||||
virtual bool OnMode ( const std::string& user, const std::string& mode ) { return true; }
|
||||
virtual bool OnMode ( const std::string& user, const std::string& mode ) = 0;
|
||||
|
||||
// notification of what users are in a channel ( you may get multiple of these... )
|
||||
virtual bool OnChannelUsers ( const std::string& channel, const std::vector<std::string>& users )
|
||||
{ return true; }
|
||||
|
||||
// OnKick: if the client has been kicked
|
||||
virtual bool OnKick ( void ) { return true; }
|
||||
|
||||
// OnKick: if the client has been kicked
|
||||
virtual bool OnBanned ( const std::string& channel ) { return true; }
|
||||
virtual bool OnChannelUsers ( const std::string& channel, const std::vector<std::string>& users ) = 0;
|
||||
|
||||
// notification that you have received the entire list of users for a channel
|
||||
virtual bool OnEndChannelUsers ( const std::string& channel ) { return true; }
|
||||
virtual bool OnEndChannelUsers ( const std::string& channel ) = 0;
|
||||
|
||||
// OnPing - default implementation replies to PING with a valid PONG. required on some systems to
|
||||
// log in. Most systems require a response in order to stay connected, used to verify a client hasn't
|
||||
|
@@ -53,7 +53,7 @@ public:
|
||||
{
|
||||
ASSERT ( i < _end );
|
||||
reserve ( i + 1 );
|
||||
_arr[i].reset ( p );
|
||||
_arr[i].reset ( ptr );
|
||||
}
|
||||
|
||||
void push_back ( auto_ptr<T>& p )
|
||||
|
@@ -1,7 +0,0 @@
|
||||
|
||||
|
||||
#define SERVER "irc.freenode.net"
|
||||
#define BOTNAME "ArchBlackmann"
|
||||
#define CHANNEL "#ReactOS"
|
||||
#define MODE "+i"
|
||||
#define PASS "ilovebunnies"
|
@@ -2,7 +2,7 @@
|
||||
// This file is (C) 2004 Royce Mitchell III
|
||||
// and released under the BSD & LGPL licenses
|
||||
|
||||
#include "MD5.h"
|
||||
#include "md5.h"
|
||||
#include "cram_md5.h"
|
||||
#include "base64.h"
|
||||
|
||||
|
@@ -1,27 +0,0 @@
|
||||
shit
|
||||
fuck
|
||||
pussy
|
||||
ass
|
||||
ass-
|
||||
-ass
|
||||
dumbass
|
||||
jackass
|
||||
fatass
|
||||
asshole
|
||||
smartass
|
||||
cunt
|
||||
fucker
|
||||
bitch
|
||||
dick
|
||||
penile
|
||||
stfu
|
||||
omfg
|
||||
lmao
|
||||
ass.
|
||||
-ass.
|
||||
semprini
|
||||
goat.cx
|
||||
ekush
|
||||
akshor
|
||||
poop
|
||||
guten morgen
|
@@ -1,10 +0,0 @@
|
||||
You should have your mouth washed out with soap!
|
||||
This is a clean channel... please watch your language
|
||||
Please try to keep it clean
|
||||
Hey, there's children present ( I'm not even a year old yet! )
|
||||
Could you find a less-offensive way to express yourself, please?
|
||||
Such language :(
|
||||
Those aren't nice words to use
|
||||
Oh, my poor innocent ears :(
|
||||
Help! My mind is being corrupted!
|
||||
filthy mouths are not appreciated here
|
@@ -11,5 +11,4 @@ Exception
|
||||
blight_
|
||||
jimtabor
|
||||
mtempel
|
||||
Gge
|
||||
Alex_Ionescu
|
||||
Gge
|
@@ -1,580 +0,0 @@
|
||||
CcCanIWrite
|
||||
CcCopyRead
|
||||
CcCopyWrite
|
||||
CcDeferWrite
|
||||
CcFastCopyRead
|
||||
CcFastCopyWrite
|
||||
CcFlushCache
|
||||
CcGetDirtyPages
|
||||
CcGetFileObjectFromBcb
|
||||
CcGetFileObjectFromSectionPtrs
|
||||
CcGetFlushedValidData
|
||||
CcGetLsnForFileObject
|
||||
CcInitializeCacheMap
|
||||
CcIsThereDirtyData
|
||||
CcMapData
|
||||
CcMdlRead
|
||||
CcMdlReadComplete
|
||||
CcMdlWriteAbort
|
||||
CcMdlWriteComplete
|
||||
CcPinMappedData
|
||||
CcPinRead
|
||||
CcPrepareMdlWrite
|
||||
CcPreparePinWrite
|
||||
CcPurgeCacheSection
|
||||
CcRemapBcb
|
||||
CcRepinBcb
|
||||
CcScheduleReadAhead
|
||||
CcSetAdditionalCacheAttributes
|
||||
CcSetBcbOwnerPointer
|
||||
CcSetDirtyPageThreshold
|
||||
CcSetDirtyPinnedData
|
||||
CcSetFileSizes
|
||||
CcSetLogHandleForFile
|
||||
CcSetReadAheadGranularity
|
||||
CcUninitializeCacheMap
|
||||
CcUnpinData
|
||||
CcUnpinDataForThread
|
||||
CcUnpinRepinnedBcb
|
||||
CcWaitForCurrentLazyWriterActivity
|
||||
CcZeroData
|
||||
DbgLoadImageSymbols
|
||||
DbgQueryDebugFilterState
|
||||
DbgSetDebugFilterState
|
||||
EVENT_TYPE
|
||||
ExAcquireResourceExclusive
|
||||
ExAcquireResourceExclusiveLite
|
||||
ExAcquireResourceSharedLite
|
||||
ExAcquireSharedStarveExclusive
|
||||
ExAcquireSharedWaitForExclusive
|
||||
ExAllocateFromZone
|
||||
ExAllocatePool
|
||||
ExAllocatePoolWithQuota
|
||||
ExAllocatePoolWithQuotaTag
|
||||
ExAllocatePoolWithTag
|
||||
ExConvertExclusiveToSharedLite
|
||||
ExCreateCallback
|
||||
ExDeleteNPagedLookasideList
|
||||
ExDeletePagedLookasideList
|
||||
ExDeleteResource
|
||||
ExDeleteResourceLite
|
||||
ExDisableResourceBoostLite
|
||||
ExEnumHandleTable
|
||||
ExExtendZone
|
||||
ExFreePool
|
||||
ExGetCurrentProcessorCounts
|
||||
ExGetCurrentProcessorCpuUsage
|
||||
ExGetExclusiveWaiterCount
|
||||
ExGetPreviousMode
|
||||
ExGetSharedWaiterCount
|
||||
ExInitializeNPagedLookasideList
|
||||
ExInitializePagedLookasideList
|
||||
ExInitializeResource
|
||||
ExInitializeResourceLite
|
||||
ExInitializeZone
|
||||
ExInterlockedAddLargeInteger
|
||||
ExInterlockedAddUlong
|
||||
ExInterlockedDecrementLong
|
||||
ExInterlockedExchangeUlong
|
||||
ExInterlockedExtendZone
|
||||
ExInterlockedIncrementLong
|
||||
ExInterlockedInsertHeadList
|
||||
ExInterlockedInsertTailList
|
||||
ExInterlockedPopEntryList
|
||||
ExInterlockedPushEntryList
|
||||
ExInterlockedRemoveHeadList
|
||||
ExIsProcessorFeaturePresent
|
||||
ExIsResourceAcquiredExclusiveLite
|
||||
ExIsResourceAcquiredSharedLite
|
||||
ExLocalTimeToSystemTime
|
||||
ExNotifyCallback
|
||||
ExPostSystemEvent
|
||||
ExQueryPoolBlockSize
|
||||
ExQueueWorkItem
|
||||
ExRaiseAccessViolation
|
||||
ExRaiseDatatypeMisalignment
|
||||
ExRaiseException
|
||||
ExRaiseHardError
|
||||
ExRaiseStatus
|
||||
ExRegisterCallback
|
||||
ExReinitializeResourceLite
|
||||
ExReleaseResource
|
||||
ExReleaseResourceForThread
|
||||
ExReleaseResourceForThreadLite
|
||||
ExRosDumpPagedPoolByTag
|
||||
ExRosQueryPoolTag
|
||||
ExSetResourceOwnerPointer
|
||||
ExSetTimerResolution
|
||||
ExSystemExceptionFilter
|
||||
ExSystemTimeToLocalTime
|
||||
ExTryToAcquireResourceExclusiveLite
|
||||
ExUnregisterCallback
|
||||
ExUuidCreate
|
||||
ExVerifySuite
|
||||
FsRtlAcquireFileExclusive
|
||||
FsRtlAddMcbEntry
|
||||
FsRtlAddToTunnelCache
|
||||
FsRtlAllocateFileLock
|
||||
FsRtlAllocatePool
|
||||
FsRtlAllocatePoolWithQuota
|
||||
FsRtlAllocatePoolWithQuotaTag
|
||||
FsRtlAllocatePoolWithTag
|
||||
FsRtlAllocateResource
|
||||
FsRtlAreNamesEqual
|
||||
FsRtlBalanceReads
|
||||
FsRtlCheckLockForReadAccess
|
||||
FsRtlCheckLockForWriteAccess
|
||||
FsRtlCopyRead
|
||||
FsRtlCopyWrite
|
||||
FsRtlFastCheckLockForRead
|
||||
FsRtlFastCheckLockForWrite
|
||||
FsRtlFastUnlockAll
|
||||
FsRtlFastUnlockAllByKey
|
||||
FsRtlFastUnlockSingle
|
||||
FsRtlFindInTunnelCache
|
||||
FsRtlFreeFileLock
|
||||
FsRtlGetFileSize
|
||||
FsRtlGetNextFileLock
|
||||
FsRtlGetNextMcbEntry
|
||||
FsRtlIncrementCcFastReadNoWait
|
||||
FsRtlIncrementCcFastReadNotPossible
|
||||
FsRtlIncrementCcFastReadResourceMiss
|
||||
FsRtlIncrementCcFastReadWait
|
||||
FsRtlInitializeFileLock
|
||||
FsRtlInitializeMcb
|
||||
FsRtlInitializeTunnelCache
|
||||
FsRtlInsertPerFileObjectContext
|
||||
FsRtlInsertPerStreamContext
|
||||
FsRtlIsDbcsInExpression
|
||||
FsRtlIsFatDbcsLegal
|
||||
FsRtlIsHpfsDbcsLegal
|
||||
FsRtlIsNameInExpression
|
||||
FsRtlLookupLastLargeMcbEntryAndIndex
|
||||
FsRtlLookupLastMcbEntry
|
||||
FsRtlLookupMcbEntry
|
||||
FsRtlLookupPerFileObjectContext
|
||||
FsRtlLookupPerStreamContextInternal
|
||||
FsRtlMdlRead
|
||||
FsRtlMdlReadComplete
|
||||
FsRtlMdlReadCompleteDev
|
||||
FsRtlMdlReadDev
|
||||
FsRtlMdlWriteComplete
|
||||
FsRtlMdlWriteCompleteDev
|
||||
FsRtlNotifyChangeDirectory
|
||||
FsRtlNotifyCleanup
|
||||
FsRtlNotifyFilterChangeDirectory
|
||||
FsRtlNotifyFilterReportChange
|
||||
FsRtlNotifyFullChangeDirectory
|
||||
FsRtlNotifyFullReportChange
|
||||
FsRtlNotifyReportChange
|
||||
FsRtlNotifyUninitializeSync
|
||||
FsRtlNumberOfRunsInMcb
|
||||
FsRtlPostPagingFileStackOverflow
|
||||
FsRtlPostStackOverflow
|
||||
FsRtlPrepareMdlWrite
|
||||
FsRtlPrepareMdlWriteDev
|
||||
FsRtlPrivateLock
|
||||
FsRtlProcessFileLock
|
||||
FsRtlRegisterFileSystemFilterCallbacks
|
||||
FsRtlReleaseFile
|
||||
FsRtlRemoveMcbEntry
|
||||
FsRtlRemovePerFileObjectContext
|
||||
FsRtlRemovePerStreamContext
|
||||
FsRtlResetLargeMcb
|
||||
FsRtlSyncVolumes
|
||||
FsRtlTeardownPerStreamContexts
|
||||
FsRtlTruncateMcb
|
||||
FsRtlUninitializeFileLock
|
||||
FsRtlUninitializeMcb
|
||||
HalAdjustResourceList
|
||||
HalAllocateCommonBuffer
|
||||
HalAssignSlotResources
|
||||
HalCalibratePerformanceCounter
|
||||
HalFlushCommonBuffer
|
||||
HalFreeCommonBuffer
|
||||
HalGetAdapter
|
||||
HalGetBusData
|
||||
HalGetBusDataByOffset
|
||||
HalGetDmaAlignmentRequirement
|
||||
HalMakeBeep
|
||||
HalQueryDisplayParameters
|
||||
HalQueryRealTimeClock
|
||||
HalReadDmaCounter
|
||||
HalRequestIpi
|
||||
HalSetBusData
|
||||
HalSetBusDataByOffset
|
||||
HalSetDisplayParameters
|
||||
HalSetRealTimeClock
|
||||
HalStartNextProcessor
|
||||
IoAcquireCancelSpinLock
|
||||
IoAcquireRemoveLockEx
|
||||
IoAcquireVpbSpinLock
|
||||
IoAllocateAdapterChannel
|
||||
IoAllocateController
|
||||
IoAllocateDriverObjectExtension
|
||||
IoAllocateErrorLogEntry
|
||||
IoAllocateIrp
|
||||
IoAllocateMdl
|
||||
IoAllocateWorkItem
|
||||
IoAssignResources
|
||||
IoAttachDevice
|
||||
IoAttachDeviceByPointer
|
||||
IoAttachDeviceToDeviceStack
|
||||
IoAttachDeviceToDeviceStackSafe
|
||||
IoBuildAsynchronousFsdRequest
|
||||
IoBuildDeviceIoControlRequest
|
||||
IoBuildPartialMdl
|
||||
IoBuildSynchronousFsdRequest
|
||||
IoCallDriver
|
||||
IoCancelFileOpen
|
||||
IoCancelIrp
|
||||
IoCheckQuerySetFileInformation
|
||||
IoCheckQuerySetVolumeInformation
|
||||
IoCheckQuotaBufferValidity
|
||||
IoCheckShareAccess
|
||||
IoCompleteRequest
|
||||
IoConnectInterrupt
|
||||
IoCreateController
|
||||
IoCreateDevice
|
||||
IoCreateDisk
|
||||
IoCreateDriver
|
||||
IoCreateFile
|
||||
IoCreateFileSpecifyDeviceObjectHint
|
||||
IoCreateNotificationEvent
|
||||
IoCreateStreamFileObject
|
||||
IoCreateStreamFileObjectEx
|
||||
IoCreateStreamFileObjectLite
|
||||
IoCreateSymbolicLink
|
||||
IoCreateSynchronizationEvent
|
||||
IoCreateUnprotectedSymbolicLink
|
||||
IoDeleteController
|
||||
IoDeleteDevice
|
||||
IoDeleteDriver
|
||||
IoDeleteSymbolicLink
|
||||
IoDetachDevice
|
||||
IoDisconnectInterrupt
|
||||
IoEnqueueIrp
|
||||
IoEnumerateDeviceObjectList
|
||||
IoFlushAdapterBuffers
|
||||
IoForwardIrpSynchronously
|
||||
IoFreeAdapterChannel
|
||||
IoFreeController
|
||||
IoFreeErrorLogEntry
|
||||
IoFreeIrp
|
||||
IoFreeMapRegisters
|
||||
IoFreeMdl
|
||||
IoFreeWorkItem
|
||||
IoGetAttachedDevice
|
||||
IoGetAttachedDeviceReference
|
||||
IoGetBaseFileSystemDeviceObject
|
||||
IoGetBootDiskInformation
|
||||
IoGetConfigurationInformation
|
||||
IoGetCurrentProcess
|
||||
IoGetDeviceAttachmentBaseRef
|
||||
IoGetDeviceInterfaceAlias
|
||||
IoGetDeviceInterfaces
|
||||
IoGetDeviceObjectPointer
|
||||
IoGetDeviceProperty
|
||||
IoGetDeviceToVerify
|
||||
IoGetDiskDeviceObject
|
||||
IoGetDriverObjectExtension
|
||||
IoGetFileObjectGenericMapping
|
||||
IoGetInitialStack
|
||||
IoGetLowerDeviceObject
|
||||
IoGetRelatedDeviceObject
|
||||
IoGetRequestorProcess
|
||||
IoGetRequestorProcessId
|
||||
IoGetRequestorSessionId
|
||||
IoGetStackLimits
|
||||
IoGetTopLevelIrp
|
||||
IoInitializeIrp
|
||||
IoInitializeRemoveLockEx
|
||||
IoInitializeTimer
|
||||
IoInvalidateDeviceRelations
|
||||
IoInvalidateDeviceState
|
||||
IoIsFileOriginRemote
|
||||
IoIsOperationSynchronous
|
||||
IoIsSystemThread
|
||||
IoIsValidNameGraftingBuffer
|
||||
IoMakeAssociatedIrp
|
||||
IoMapTransfer
|
||||
IoOpenDeviceInstanceKey
|
||||
IoOpenDeviceInterfaceRegistryKey
|
||||
IoOpenDeviceRegistryKey
|
||||
IoPageRead
|
||||
IoPnPDeliverServicePowerNotification
|
||||
IoQueryDeviceDescription
|
||||
IoQueryDeviceEnumInfo
|
||||
IoQueryFileDosDeviceName
|
||||
IoQueryFileInformation
|
||||
IoQueryVolumeInformation
|
||||
IoQueueThreadIrp
|
||||
IoQueueWorkItem
|
||||
IoRaiseHardError
|
||||
IoRaiseInformationalHardError
|
||||
IoReadDiskSignature
|
||||
IoReadPartitionTableEx
|
||||
IoRegisterBootDriverReinitialization
|
||||
IoRegisterDeviceInterface
|
||||
IoRegisterDriverReinitialization
|
||||
IoRegisterFileSystem
|
||||
IoRegisterFsRegistrationChange
|
||||
IoRegisterLastChanceShutdownNotification
|
||||
IoRegisterPlugPlayNotification
|
||||
IoRegisterShutdownNotification
|
||||
IoReleaseCancelSpinLock
|
||||
IoReleaseRemoveLockAndWaitEx
|
||||
IoReleaseRemoveLockEx
|
||||
IoReleaseVpbSpinLock
|
||||
IoRemoveShareAccess
|
||||
IoReportDetectedDevice
|
||||
IoReportHalResourceUsage
|
||||
IoReportResourceForDetection
|
||||
IoReportResourceUsage
|
||||
IoReportTargetDeviceChange
|
||||
IoReportTargetDeviceChangeAsynchronous
|
||||
IoRequestDeviceEject
|
||||
IoReuseIrp
|
||||
IoSetCompletionRoutineEx
|
||||
IoSetDeviceInterfaceState
|
||||
IoSetDeviceToVerify
|
||||
IoSetFileOrigin
|
||||
IoSetHardErrorOrVerifyDevice
|
||||
IoSetInformation
|
||||
IoSetIoCompletion
|
||||
IoSetPartitionInformationEx
|
||||
IoSetShareAccess
|
||||
IoSetStartIoAttributes
|
||||
IoSetSystemPartition
|
||||
IoSetThreadHardErrorMode
|
||||
IoSetTopLevelIrp
|
||||
IoStartNextPacket
|
||||
IoStartNextPacketByKey
|
||||
IoStartPacket
|
||||
IoStartTimer
|
||||
IoStopTimer
|
||||
IoSynchronousInvalidateDeviceRelations
|
||||
IoSynchronousPageWrite
|
||||
IoUnregisterFileSystem
|
||||
IoUnregisterFsRegistrationChange
|
||||
IoUnregisterPlugPlayNotification
|
||||
IoUnregisterShutdownNotification
|
||||
IoUpdateShareAccess
|
||||
IoValidateDeviceIoControlAccess
|
||||
IoVerifyPartitionTable
|
||||
IoVerifyVolume
|
||||
IoVolumeDeviceToDosName
|
||||
IoWMIAllocateInstanceIds
|
||||
IoWMIDeviceObjectToInstanceName
|
||||
IoWMIExecuteMethod
|
||||
IoWMIHandleToInstanceName
|
||||
IoWMIOpenBlock
|
||||
IoWMIQueryAllData
|
||||
IoWMIQueryAllDataMultiple
|
||||
IoWMIQuerySingleInstance
|
||||
IoWMIQuerySingleInstanceMultiple
|
||||
IoWMIRegistrationControl
|
||||
IoWMISetNotificationCallback
|
||||
IoWMISetSingleInstance
|
||||
IoWMISetSingleItem
|
||||
IoWMISuggestInstanceName
|
||||
IoWMIWriteEvent
|
||||
IoWriteErrorLogEntry
|
||||
IoWritePartitionTableEx
|
||||
KPRIORITY
|
||||
KdPortGetByte
|
||||
KdPortPollByte
|
||||
KdPortPutByte
|
||||
Ke386QueryIoAccessMap
|
||||
Ke386SetIoAccessMap
|
||||
KeAcquireInterruptSpinLock
|
||||
KeAreApcsDisabled
|
||||
KeCapturePersistentThreadState
|
||||
KeDeregisterBugCheckReasonCallback
|
||||
KeFindConfigurationEntry
|
||||
KeFindConfigurationNextEntry
|
||||
KeFlushEntireTb
|
||||
KeFlushQueuedDpcs
|
||||
KeGetRecommendedSharedDataAlignment
|
||||
KeIsExecutingDpc
|
||||
KeQueryActiveProcessors
|
||||
KeQueryPerformanceCounter
|
||||
KeQueryPriorityThread
|
||||
KeQueryRuntimeThread
|
||||
KeQuerySystemTime
|
||||
KeQueryTickCount
|
||||
KeQueryTimeIncrement
|
||||
KeRaiseIrql
|
||||
KeRaiseIrqlToDpcLevel
|
||||
KeRaiseUserException
|
||||
KeReadStateEvent
|
||||
KeRegisterBugCheckCallback
|
||||
KeRegisterBugCheckReasonCallback
|
||||
KeReleaseInterruptSpinLock
|
||||
KeReleaseMutant
|
||||
KeReleaseMutex
|
||||
KeReleaseSemaphore
|
||||
KeReleaseSpinLock
|
||||
KeReleaseSpinLockFromDpcLevel
|
||||
KeReleaseSpinLockFromDpcLevel
|
||||
KeRemoveByKeyDeviceQueue
|
||||
KeRemoveByKeyDeviceQueueIfBusy
|
||||
KeRemoveDeviceQueue
|
||||
KeRemoveEntryDeviceQueue
|
||||
KeRemoveSystemServiceTable
|
||||
KeRestoreFloatingPointState
|
||||
KeRevertToUserAffinityThread
|
||||
KeRosDumpStackFrames
|
||||
KeRosGetStackFrames
|
||||
KeRosPrintAddress
|
||||
KeSaveFloatingPointState
|
||||
KeSetDmaIoCoherency
|
||||
KeSetEvent
|
||||
KeSetEventBoostPriority
|
||||
KeSetIdealProcessorThread
|
||||
KeSetKernelStackSwapEnable
|
||||
KeSetProfileIrql
|
||||
KeSetSystemAffinityThread
|
||||
KeSetTimeIncrement
|
||||
KeTerminateThread
|
||||
KeUserModeCallback
|
||||
KeWaitForMutexObject
|
||||
KeWaitForSingleObject
|
||||
KiCoprocessorError
|
||||
KiUnexpectedInterrupt
|
||||
LONG
|
||||
LdrFindResourceDirectory_U
|
||||
MmAddPhysicalMemory
|
||||
MmAddVerifierThunks
|
||||
MmAdjustWorkingSetSize
|
||||
MmAdvanceMdl
|
||||
MmAllocateContiguousMemory
|
||||
MmAllocateContiguousMemorySpecifyCache
|
||||
MmAllocateMappingAddress
|
||||
MmAllocateNonCachedMemory
|
||||
MmBuildMdlForNonPagedPool
|
||||
MmCanFileBeTruncated
|
||||
MmCreateMdl
|
||||
MmCreateSection
|
||||
MmDbgTranslatePhysicalAddress
|
||||
MmDisableModifiedWriteOfSection
|
||||
MmFlushImageSection
|
||||
MmForceSectionClosed
|
||||
MmFreeContiguousMemory
|
||||
MmFreeMappingAddress
|
||||
MmFreeNonCachedMemory
|
||||
MmGetPhysicalAddress
|
||||
MmGetPhysicalMemoryRanges
|
||||
MmGetSystemRoutineAddress
|
||||
MmGetVirtualForPhysical
|
||||
MmGrowKernelStack
|
||||
MmIsAddressValid
|
||||
MmIsDriverVerifying
|
||||
MmIsNonPagedSystemAddressValid
|
||||
MmIsRecursiveIoFault
|
||||
MmIsThisAnNtAsSystem
|
||||
MmIsVerifierEnabled
|
||||
MmLockPagableDataSection
|
||||
MmLockPagableImageSection
|
||||
MmLockPagableSectionByHandle
|
||||
MmMapIoSpace
|
||||
MmMapLockedPages
|
||||
MmMapLockedPagesWithReservedMapping
|
||||
MmMapMemoryDumpMdl
|
||||
MmMapUserAddressesToPage
|
||||
MmMapVideoDisplay
|
||||
MmMapViewInSessionSpace
|
||||
MmMapViewInSystemSpace
|
||||
MmMapViewOfSection
|
||||
MmMarkPhysicalMemoryAsBad
|
||||
MmMarkPhysicalMemoryAsGood
|
||||
MmPageEntireDriver
|
||||
MmPrefetchPages
|
||||
MmProbeAndLockPages
|
||||
MmProbeAndLockProcessPages
|
||||
MmProbeAndLockSelectedPages
|
||||
MmProtectMdlSystemAddress
|
||||
MmQuerySystemSize
|
||||
MmRemovePhysicalMemory
|
||||
MmResetDriverPaging
|
||||
MmSecureVirtualMemory
|
||||
MmSetAddressRangeModified
|
||||
MmSetBankedSection
|
||||
MmSizeOfMdl
|
||||
MmTrimAllSystemPagableMemory
|
||||
MmUnlockPagableImageSection
|
||||
MmUnlockPages
|
||||
MmUnmapIoSpace
|
||||
MmUnmapLockedPages
|
||||
MmUnmapReservedMapping
|
||||
MmUnmapVideoDisplay
|
||||
MmUnmapViewInSessionSpace
|
||||
MmUnmapViewInSystemSpace
|
||||
MmUnmapViewOfSection
|
||||
MmUnsecureVirtualMemory
|
||||
OUT
|
||||
ObCreateObject
|
||||
PEJOB
|
||||
PEPROCESS
|
||||
PKBUGCHECK_CALLBACK_RECORD
|
||||
PKDEVICE_QUEUE_ENTRY
|
||||
PKIRQL
|
||||
PULONG
|
||||
PVOID
|
||||
PW32_THREAD_CALLBACK
|
||||
PoCallDriver
|
||||
PoRegisterDeviceForIdleDetection
|
||||
PoRegisterSystemState
|
||||
PoRequestPowerIrp
|
||||
PoSetDeviceBusy
|
||||
PoSetPowerState
|
||||
PoSetSystemState
|
||||
PoStartNextPowerIrp
|
||||
PoUnregisterSystemState
|
||||
ProbeForRead
|
||||
ProbeForWrite
|
||||
PsAssignImpersonationToken
|
||||
PsCreateSystemProcess
|
||||
PsCreateSystemThread
|
||||
PsGetCurrentProcessId
|
||||
PsGetCurrentThreadId
|
||||
PsImpersonateClient
|
||||
PsReferenceImpersonationToken
|
||||
PsReferencePrimaryToken
|
||||
PsRevertThreadToSelf
|
||||
PsRevertToSelf
|
||||
PsTerminateSystemThread
|
||||
READ_PORT_BUFFER_UCHAR
|
||||
READ_PORT_BUFFER_ULONG
|
||||
READ_PORT_BUFFER_USHORT
|
||||
READ_PORT_UCHAR
|
||||
READ_PORT_ULONG
|
||||
READ_PORT_USHORT
|
||||
SeAssignSecurityEx
|
||||
SeAuditHardLinkCreation
|
||||
SeAuditingFileEvents
|
||||
SeAuditingFileEventsWithContext
|
||||
SeAuditingFileOrGlobalEvents
|
||||
SeAuditingHardLinkEvents
|
||||
SeAuditingHardLinkEventsWithContext
|
||||
SeCaptureSecurityDescriptor
|
||||
SeCaptureSubjectContext
|
||||
SeCloseObjectAuditAlarm
|
||||
SeCreateAccessState
|
||||
SeCreateClientSecurityFromSubjectContext
|
||||
SeFilterToken
|
||||
SeImpersonateClientEx
|
||||
SePrivilegeObjectAuditAlarm
|
||||
SeQueryInformationToken
|
||||
SeQuerySessionIdToken
|
||||
SeReleaseSecurityDescriptor
|
||||
SeSetSecurityDescriptorInfoEx
|
||||
SeTokenIsAdmin
|
||||
SeTokenIsRestricted
|
||||
SeTokenIsWriteRestricted
|
||||
WRITE_PORT_BUFFER_UCHAR
|
||||
WRITE_PORT_BUFFER_ULONG
|
||||
WRITE_PORT_BUFFER_USHORT
|
||||
WRITE_PORT_UCHAR
|
||||
WRITE_PORT_ULONG
|
||||
WRITE_PORT_USHORT
|
@@ -1,10 +0,0 @@
|
||||
/me bows humbly and begs %s's forgiveness
|
||||
%s is soo cool... I hope to be like him some day
|
||||
/me hides in a corner and hopes %s doesn't beat him with the whipping noodle again
|
||||
/me prostrates at %s's feet and begs his majesty's forgiveness
|
||||
%s: please don't hurt me!
|
||||
I'm not worthy... I'm not worthy...
|
||||
/me sings %s's praises to the world!
|
||||
/me thinks %s is smarter than %dev%
|
||||
%s: oh please may I defrag your sock drawer?
|
||||
/me gives %s a cookie, hoping it will make up for breaking %func% the other day...
|
@@ -1 +0,0 @@
|
||||
/me is bored
|
@@ -1,9 +0,0 @@
|
||||
PASSIVE_LEVEL
|
||||
APC_LEVEL
|
||||
DISPATCH_LEVEL
|
||||
PROFILE_LEVEL
|
||||
CLOCK1_LEVEL
|
||||
IPI_LEVEL
|
||||
POWER_LEVEL
|
||||
HIGH_LEVEL
|
||||
SYNCH_LEVEL
|
@@ -1,38 +0,0 @@
|
||||
TARGET := ArchBlackmann.exe
|
||||
|
||||
.PHONY: all
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
CPP=mingw32-g++
|
||||
CFLAGS := -DWIN32 -D_DEBUG -D_CONSOLE -D_MBCS
|
||||
LFLAGS :=
|
||||
LIBS := -lstdc++ -lws2_32
|
||||
|
||||
SRCS := ArchBlackmann.cpp \
|
||||
base64.cpp \
|
||||
chomp.cpp \
|
||||
cram_md5.cpp \
|
||||
File.cpp \
|
||||
IRCClient.cpp \
|
||||
MD5.cpp \
|
||||
panic.cpp \
|
||||
ReliMT.cpp \
|
||||
SockUtils.cpp \
|
||||
SplitJoin.cpp \
|
||||
ssprintf.cpp \
|
||||
ThreadPool.cpp \
|
||||
trim.cpp
|
||||
|
||||
OBJS := $(SRCS:.cpp=.o)
|
||||
|
||||
$(TARGET): $(OBJS)
|
||||
$(CPP) $(LFLAGS) -o $@ $(OBJS) $(LIBS)
|
||||
|
||||
.cpp.o: $<
|
||||
$(CPP) $(CFLAGS) -c $< -o $@
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-@del $(TARGET)
|
||||
-@del $(OBJS)
|
@@ -1,5 +0,0 @@
|
||||
/me slaps %s with a large trout
|
||||
recycle(%s)
|
||||
Did I hear something? Musta been a %s-fly... Where's that fly-swatter?
|
||||
%s: go away son, you bother me....
|
||||
/me beats %s with the whipping noodle
|
@@ -1,44 +0,0 @@
|
||||
This doc can be also found on the wiki.
|
||||
|
||||
ArchBlackman is a IRC-Chat bot of the #reactos irc channel. He has been coded by Royce3 and DrFred (mbosma) currently runs him.
|
||||
|
||||
|
||||
If some one use a swear word he'll tell him not to do so and you can also ask him something technical about reactos. :)
|
||||
|
||||
Besides this he also knows some commands. The systax for giving him commands "ArchBlackmann: !grovel". (don't forget to address him)
|
||||
|
||||
- !grovel - This is the only command that non ops can do (No Parameter)
|
||||
- !kiss <person>
|
||||
- !hug <person>
|
||||
- !give <someone> <something>
|
||||
- !say <something> - You can tell him to say something on the channel via PrivateMessage
|
||||
|
||||
|
||||
ArchBlackmann know what he should say from some text files. They can be found on the svn-dir. But can also edit them online if you are op using:
|
||||
|
||||
- !add <list> <item>
|
||||
- !remove <list> <item>
|
||||
|
||||
List that are used directly to create responses are:
|
||||
|
||||
- tech - here are the sentences ArchBlackmann says when he finds his name
|
||||
- curse - this are the curses he looks for
|
||||
- cursecop - this the responces to them
|
||||
- grovel - this is said when an op does the grovel command
|
||||
- nogrovel - this when someone else does it
|
||||
|
||||
The remaining lists are not used directly, but by the other lists.
|
||||
|
||||
They are:
|
||||
|
||||
- dev
|
||||
- func
|
||||
- irql
|
||||
- module
|
||||
- period
|
||||
- status
|
||||
- stru
|
||||
- type
|
||||
|
||||
And they are used like this:
|
||||
/me thinks %s is smarter than %dev%
|
@@ -551,7 +551,7 @@ static bool numberfl(std::string& f, long double __n, char exp_sign, int size,
|
||||
return true;
|
||||
}
|
||||
|
||||
static int stringa(std::string& f, const char* s, int len, int field_width, int precision, int flags)
|
||||
static int string(std::string& f, const char* s, int len, int field_width, int precision, int flags)
|
||||
{
|
||||
int i, done = 0;
|
||||
if (s == NULL)
|
||||
@@ -654,7 +654,7 @@ std::string ssvprintf ( const char *fmt, va_list args )
|
||||
long double _ldouble;
|
||||
double _double;
|
||||
const char *s;
|
||||
const wchar_t* sw;
|
||||
const unsigned short* sw;
|
||||
int result;
|
||||
std::string f;
|
||||
|
||||
@@ -793,12 +793,12 @@ std::string ssvprintf ( const char *fmt, va_list args )
|
||||
case 's':
|
||||
if (qualifier == 'l' || qualifier == 'w') {
|
||||
/* print unicode string */
|
||||
sw = (const wchar_t*)va_arg(args, wchar_t *);
|
||||
sw = va_arg(args, wchar_t *);
|
||||
result = stringw(f, sw, -1, field_width, precision, flags);
|
||||
} else {
|
||||
/* print ascii string */
|
||||
s = va_arg(args, char *);
|
||||
result = stringa(f, s, -1, field_width, precision, flags);
|
||||
result = string(f, s, -1, field_width, precision, flags);
|
||||
}
|
||||
if (result < 0)
|
||||
{
|
||||
@@ -811,10 +811,10 @@ std::string ssvprintf ( const char *fmt, va_list args )
|
||||
if (qualifier == 'h') {
|
||||
/* print ascii string */
|
||||
s = va_arg(args, char *);
|
||||
result = stringa(f, s, -1, field_width, precision, flags);
|
||||
result = string(f, s, -1, field_width, precision, flags);
|
||||
} else {
|
||||
/* print unicode string */
|
||||
sw = (const wchar_t*)va_arg(args, wchar_t *);
|
||||
sw = va_arg(args, wchar_t *);
|
||||
result = stringw(f, sw, -1, field_width, precision, flags);
|
||||
}
|
||||
if (result < 0)
|
||||
@@ -846,7 +846,7 @@ std::string ssvprintf ( const char *fmt, va_list args )
|
||||
s = pas->Buffer;
|
||||
len = pas->Length;
|
||||
}
|
||||
result = stringa(f, s, -1, field_width, precision, flags);
|
||||
result = string(f, s, -1, field_width, precision, flags);
|
||||
}
|
||||
if (result < 0)
|
||||
return -1;
|
||||
|
@@ -1,654 +0,0 @@
|
||||
RPC_NT_ALREADY_LISTENING
|
||||
RPC_NT_ALREADY_REGISTERED
|
||||
RPC_NT_CALL_FAILED
|
||||
RPC_NT_CALL_FAILED_DNE
|
||||
RPC_NT_CANT_CREATE_ENDPOINT
|
||||
RPC_NT_INVALID_BINDING
|
||||
RPC_NT_INVALID_ENDPOINT_FORMAT
|
||||
RPC_NT_INVALID_NETWORK_OPTIONS
|
||||
RPC_NT_INVALID_NET_ADDR
|
||||
RPC_NT_INVALID_RPC_PROTSEQ
|
||||
RPC_NT_INVALID_STRING_BINDING
|
||||
RPC_NT_INVALID_STRING_UUID
|
||||
RPC_NT_INVALID_TIMEOUT
|
||||
RPC_NT_NOT_LISTENING
|
||||
RPC_NT_NO_BINDINGS
|
||||
RPC_NT_NO_CALL_ACTIVE
|
||||
RPC_NT_NO_ENDPOINT_FOUND
|
||||
RPC_NT_NO_PROTSEQS
|
||||
RPC_NT_NO_PROTSEQS_REGISTERED
|
||||
RPC_NT_OBJECT_NOT_FOUND
|
||||
RPC_NT_OUT_OF_RESOURCES
|
||||
RPC_NT_PROTOCOL_ERROR
|
||||
RPC_NT_PROTSEQ_NOT_SUPPORTED
|
||||
RPC_NT_SERVER_TOO_BUSY
|
||||
RPC_NT_SERVER_UNAVAILABLE
|
||||
RPC_NT_SS_IN_NULL_CONTEXT
|
||||
RPC_NT_TYPE_ALREADY_REGISTERED
|
||||
RPC_NT_UNKNOWN_IF
|
||||
RPC_NT_UNKNOWN_MGR_TYPE
|
||||
RPC_NT_WRONG_KIND_OF_BINDING
|
||||
STATUS_ABANDONED
|
||||
STATUS_ABANDONED_WAIT_0
|
||||
STATUS_ABANDONED_WAIT_63
|
||||
STATUS_ABIOS_INVALID_COMMAND
|
||||
STATUS_ABIOS_INVALID_LID
|
||||
STATUS_ABIOS_INVALID_SELECTOR
|
||||
STATUS_ABIOS_LID_ALREADY_OWNED
|
||||
STATUS_ABIOS_LID_NOT_EXIST
|
||||
STATUS_ABIOS_NOT_LID_OWNER
|
||||
STATUS_ABIOS_NOT_PRESENT
|
||||
STATUS_ABIOS_SELECTOR_NOT_AVAILABLE
|
||||
STATUS_ACCESS_DENIED
|
||||
STATUS_ACCESS_VIOLATION
|
||||
STATUS_ACCOUNT_DISABLED
|
||||
STATUS_ACCOUNT_EXPIRED
|
||||
STATUS_ACCOUNT_LOCKED_OUT
|
||||
STATUS_ACCOUNT_RESTRICTION
|
||||
STATUS_ADAPTER_HARDWARE_ERROR
|
||||
STATUS_ADDRESS_ALREADY_ASSOCIATED
|
||||
STATUS_ADDRESS_ALREADY_EXISTS
|
||||
STATUS_ADDRESS_CLOSED
|
||||
STATUS_ADDRESS_NOT_ASSOCIATED
|
||||
STATUS_AGENTS_EXHAUSTED
|
||||
STATUS_ALERTED
|
||||
STATUS_ALIAS_EXISTS
|
||||
STATUS_ALLOCATE_BUCKET
|
||||
STATUS_ALLOTTED_SPACE_EXCEEDED
|
||||
STATUS_ALREADY_COMMITTED
|
||||
STATUS_ALREADY_DISCONNECTED
|
||||
STATUS_ALREADY_WIN32
|
||||
STATUS_APP_INIT_FAILURE
|
||||
STATUS_ARBITRATION_UNHANDLED
|
||||
STATUS_ARRAY_BOUNDS_EXCEEDED
|
||||
STATUS_AUDIT_FAILED
|
||||
STATUS_BACKUP_CONTROLLER
|
||||
STATUS_BAD_COMPRESSION_BUFFER
|
||||
STATUS_BAD_CURRENT_DIRECTORY
|
||||
STATUS_BAD_DESCRIPTOR_FORMAT
|
||||
STATUS_BAD_DEVICE_TYPE
|
||||
STATUS_BAD_DLL_ENTRYPOINT
|
||||
STATUS_BAD_FUNCTION_TABLE
|
||||
STATUS_BAD_IMPERSONATION_LEVEL
|
||||
STATUS_BAD_INHERITANCE_ACL
|
||||
STATUS_BAD_INITIAL_PC
|
||||
STATUS_BAD_INITIAL_STACK
|
||||
STATUS_BAD_LOGON_SESSION_STATE
|
||||
STATUS_BAD_MASTER_BOOT_RECORD
|
||||
STATUS_BAD_NETWORK_NAME
|
||||
STATUS_BAD_NETWORK_PATH
|
||||
STATUS_BAD_REMOTE_ADAPTER
|
||||
STATUS_BAD_SERVICE_ENTRYPOINT
|
||||
STATUS_BAD_STACK
|
||||
STATUS_BAD_TOKEN_TYPE
|
||||
STATUS_BAD_VALIDATION_CLASS
|
||||
STATUS_BAD_WORKING_SET_LIMIT
|
||||
STATUS_BEGINNING_OF_MEDIA
|
||||
STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT
|
||||
STATUS_BREAKPOINT
|
||||
STATUS_BUFFER_OVERFLOW
|
||||
STATUS_BUFFER_TOO_SMALL
|
||||
STATUS_BUS_RESET
|
||||
STATUS_CANCELLED
|
||||
STATUS_CANNOT_DELETE
|
||||
STATUS_CANNOT_IMPERSONATE
|
||||
STATUS_CANNOT_LOAD_REGISTRY_FILE
|
||||
STATUS_CANT_ACCESS_DOMAIN_INFO
|
||||
STATUS_CANT_DISABLE_MANDATORY
|
||||
STATUS_CANT_OPEN_ANONYMOUS
|
||||
STATUS_CANT_TERMINATE_SELF
|
||||
STATUS_CANT_WAIT
|
||||
STATUS_CARDBUS_NOT_SUPPORTED
|
||||
STATUS_CHECKING_FILE_SYSTEM
|
||||
STATUS_CHILD_MUST_BE_VOLATILE
|
||||
STATUS_CLIENT_SERVER_PARAMETERS_INVALID
|
||||
STATUS_COMMITMENT_LIMIT
|
||||
STATUS_CONFLICTING_ADDRESSES
|
||||
STATUS_CONNECTION_ABORTED
|
||||
STATUS_CONNECTION_ACTIVE
|
||||
STATUS_CONNECTION_COUNT_LIMIT
|
||||
STATUS_CONNECTION_DISCONNECTED
|
||||
STATUS_CONNECTION_INVALID
|
||||
STATUS_CONNECTION_IN_USE
|
||||
STATUS_CONNECTION_REFUSED
|
||||
STATUS_CONNECTION_RESET
|
||||
STATUS_CONTROL_C_EXIT
|
||||
STATUS_CONVERT_TO_LARGE
|
||||
STATUS_COULD_NOT_INTERPRET
|
||||
STATUS_CRC_ERROR
|
||||
STATUS_CTL_FILE_NOT_SUPPORTED
|
||||
STATUS_DATATYPE_MISALIGNMENT
|
||||
STATUS_DATA_ERROR
|
||||
STATUS_DATA_LATE_ERROR
|
||||
STATUS_DATA_NOT_ACCEPTED
|
||||
STATUS_DATA_OVERRUN
|
||||
STATUS_DEBUG_ATTACH_FAILED
|
||||
STATUS_DELETE_PENDING
|
||||
STATUS_DEVICE_ALREADY_ATTACHED
|
||||
STATUS_DEVICE_BUSY
|
||||
STATUS_DEVICE_CONFIGURATION_ERROR
|
||||
STATUS_DEVICE_DATA_ERROR
|
||||
STATUS_DEVICE_DOES_NOT_EXIST
|
||||
STATUS_DEVICE_NOT_CONNECTED
|
||||
STATUS_DEVICE_NOT_PARTITIONED
|
||||
STATUS_DEVICE_NOT_READY
|
||||
STATUS_DEVICE_OFF_LINE
|
||||
STATUS_DEVICE_PAPER_EMPTY
|
||||
STATUS_DEVICE_POWERED_OFF
|
||||
STATUS_DEVICE_POWER_FAILURE
|
||||
STATUS_DEVICE_PROTOCOL_ERROR
|
||||
STATUS_DFS_EXIT_PATH_FOUND
|
||||
STATUS_DFS_UNAVAILABLE
|
||||
STATUS_DIRECTORY_NOT_EMPTY
|
||||
STATUS_DISK_CORRUPT_ERROR
|
||||
STATUS_DISK_FULL
|
||||
STATUS_DISK_OPERATION_FAILED
|
||||
STATUS_DISK_RECALIBRATE_FAILED
|
||||
STATUS_DISK_RESET_FAILED
|
||||
STATUS_DLL_INIT_FAILED
|
||||
STATUS_DLL_INIT_FAILED_LOGOFF
|
||||
STATUS_DLL_NOT_FOUND
|
||||
STATUS_DOMAIN_CONTROLLER_NOT_FOUND
|
||||
STATUS_DOMAIN_CTRLR_CONFIG_ERROR
|
||||
STATUS_DOMAIN_EXISTS
|
||||
STATUS_DOMAIN_LIMIT_EXCEEDED
|
||||
STATUS_DOMAIN_TRUST_INCONSISTENT
|
||||
STATUS_DRIVER_CANCEL_TIMEOUT
|
||||
STATUS_DRIVER_ENTRYPOINT_NOT_FOUND
|
||||
STATUS_DRIVER_INTERNAL_ERROR
|
||||
STATUS_DRIVER_ORDINAL_NOT_FOUND
|
||||
STATUS_DRIVER_UNABLE_TO_LOAD
|
||||
STATUS_DUPLICATE_NAME
|
||||
STATUS_DUPLICATE_OBJECTID
|
||||
STATUS_EAS_NOT_SUPPORTED
|
||||
STATUS_EA_CORRUPT_ERROR
|
||||
STATUS_EA_LIST_INCONSISTENT
|
||||
STATUS_EA_TOO_LARGE
|
||||
STATUS_END_OF_FILE
|
||||
STATUS_END_OF_MEDIA
|
||||
STATUS_ENTRYPOINT_NOT_FOUND
|
||||
STATUS_EOM_OVERFLOW
|
||||
STATUS_EVALUATION_EXPIRATION
|
||||
STATUS_EVENTLOG_CANT_START
|
||||
STATUS_EVENTLOG_FILE_CHANGED
|
||||
STATUS_EVENTLOG_FILE_CORRUPT
|
||||
STATUS_EVENT_DONE
|
||||
STATUS_EVENT_PENDING
|
||||
STATUS_EXTRANEOUS_INFORMATION
|
||||
STATUS_FAIL_CHECK
|
||||
STATUS_FATAL_APP_EXIT
|
||||
STATUS_FILEMARK_DETECTED
|
||||
STATUS_FILES_OPEN
|
||||
STATUS_FILE_CLOSED
|
||||
STATUS_FILE_CORRUPT_ERROR
|
||||
STATUS_FILE_DELETED
|
||||
STATUS_FILE_FORCED_CLOSED
|
||||
STATUS_FILE_INVALID
|
||||
STATUS_FILE_IS_A_DIRECTORY
|
||||
STATUS_FILE_IS_OFFLINE
|
||||
STATUS_FILE_LOCK_CONFLICT
|
||||
STATUS_FILE_RENAMED
|
||||
STATUS_FLOAT_DENORMAL_OPERAND
|
||||
STATUS_FLOAT_DIVIDE_BY_ZERO
|
||||
STATUS_FLOAT_INEXACT_RESULT
|
||||
STATUS_FLOAT_INVALID_OPERATION
|
||||
STATUS_FLOAT_OVERFLOW
|
||||
STATUS_FLOAT_STACK_CHECK
|
||||
STATUS_FLOAT_UNDERFLOW
|
||||
STATUS_FLOPPY_BAD_REGISTERS
|
||||
STATUS_FLOPPY_ID_MARK_NOT_FOUND
|
||||
STATUS_FLOPPY_UNKNOWN_ERROR
|
||||
STATUS_FLOPPY_VOLUME
|
||||
STATUS_FLOPPY_WRONG_CYLINDER
|
||||
STATUS_FOUND_OUT_OF_SCOPE
|
||||
STATUS_FREE_VM_NOT_AT_BASE
|
||||
STATUS_FS_DRIVER_REQUIRED
|
||||
STATUS_FT_MISSING_MEMBER
|
||||
STATUS_FT_ORPHANING
|
||||
STATUS_FT_READ_RECOVERING_FROM_BACKUP
|
||||
STATUS_FT_WRITE_RECOVERY
|
||||
STATUS_FULLSCREEN_MODE
|
||||
STATUS_GENERIC_NOT_MAPPED
|
||||
STATUS_GRACEFUL_DISCONNECT
|
||||
STATUS_GROUP_EXISTS
|
||||
STATUS_GUARD_PAGE_VIOLATION
|
||||
STATUS_GUIDS_EXHAUSTED
|
||||
STATUS_GUID_SUBSTITUTION_MADE
|
||||
STATUS_HANDLES_CLOSED
|
||||
STATUS_HANDLE_NOT_CLOSABLE
|
||||
STATUS_HOST_UNREACHABLE
|
||||
STATUS_ILLEGAL_CHARACTER
|
||||
STATUS_ILLEGAL_DLL_RELOCATION
|
||||
STATUS_ILLEGAL_FLOAT_CONTEXT
|
||||
STATUS_ILLEGAL_FUNCTION
|
||||
STATUS_ILLEGAL_INSTRUCTION
|
||||
STATUS_ILL_FORMED_PASSWORD
|
||||
STATUS_ILL_FORMED_SERVICE_ENTRY
|
||||
STATUS_IMAGE_ALREADY_LOADED
|
||||
STATUS_IMAGE_CHECKSUM_MISMATCH
|
||||
STATUS_IMAGE_MACHINE_TYPE_MISMATCH
|
||||
STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE
|
||||
STATUS_IMAGE_MP_UP_MISMATCH
|
||||
STATUS_IMAGE_NOT_AT_BASE
|
||||
STATUS_INCOMPATIBLE_FILE_MAP
|
||||
STATUS_INFO_LENGTH_MISMATCH
|
||||
STATUS_INSTANCE_NOT_AVAILABLE
|
||||
STATUS_INSTRUCTION_MISALIGNMENT
|
||||
STATUS_INSUFFICIENT_LOGON_INFO
|
||||
STATUS_INSUFFICIENT_RESOURCES
|
||||
STATUS_INSUFF_SERVER_RESOURCES
|
||||
STATUS_INTEGER_DIVIDE_BY_ZERO
|
||||
STATUS_INTEGER_OVERFLOW
|
||||
STATUS_INTERNAL_DB_CORRUPTION
|
||||
STATUS_INTERNAL_DB_ERROR
|
||||
STATUS_INTERNAL_ERROR
|
||||
STATUS_INVALID_ACCOUNT_NAME
|
||||
STATUS_INVALID_ACL
|
||||
STATUS_INVALID_ADDRESS
|
||||
STATUS_INVALID_ADDRESS_COMPONENT
|
||||
STATUS_INVALID_ADDRESS_WILDCARD
|
||||
STATUS_INVALID_BLOCK_LENGTH
|
||||
STATUS_INVALID_BUFFER_SIZE
|
||||
STATUS_INVALID_CID
|
||||
STATUS_INVALID_COMPUTER_NAME
|
||||
STATUS_INVALID_CONNECTION
|
||||
STATUS_INVALID_DEVICE_REQUEST
|
||||
STATUS_INVALID_DEVICE_STATE
|
||||
STATUS_INVALID_DISPOSITION
|
||||
STATUS_INVALID_DOMAIN_ROLE
|
||||
STATUS_INVALID_DOMAIN_STATE
|
||||
STATUS_INVALID_EA_FLAG
|
||||
STATUS_INVALID_EA_NAME
|
||||
STATUS_INVALID_FILE_FOR_SECTION
|
||||
STATUS_INVALID_GROUP_ATTRIBUTES
|
||||
STATUS_INVALID_HANDLE
|
||||
STATUS_INVALID_HW_PROFILE
|
||||
STATUS_INVALID_ID_AUTHORITY
|
||||
STATUS_INVALID_IMAGE_FORMAT
|
||||
STATUS_INVALID_IMAGE_LE_FORMAT
|
||||
STATUS_INVALID_IMAGE_NE_FORMAT
|
||||
STATUS_INVALID_IMAGE_NOT_MZ
|
||||
STATUS_INVALID_IMAGE_PROTECT
|
||||
STATUS_INVALID_IMAGE_WIN_16
|
||||
STATUS_INVALID_INFO_CLASS
|
||||
STATUS_INVALID_LDT_DESCRIPTOR
|
||||
STATUS_INVALID_LDT_OFFSET
|
||||
STATUS_INVALID_LDT_SIZE
|
||||
STATUS_INVALID_LEVEL
|
||||
STATUS_INVALID_LOCK_SEQUENCE
|
||||
STATUS_INVALID_LOGON_HOURS
|
||||
STATUS_INVALID_LOGON_TYPE
|
||||
STATUS_INVALID_MEMBER
|
||||
STATUS_INVALID_NETWORK_RESPONSE
|
||||
STATUS_INVALID_OPLOCK_PROTOCOL
|
||||
STATUS_INVALID_OWNER
|
||||
STATUS_INVALID_PAGE_PROTECTION
|
||||
STATUS_INVALID_PARAMETER
|
||||
STATUS_INVALID_PARAMETER_1
|
||||
STATUS_INVALID_PARAMETER_10
|
||||
STATUS_INVALID_PARAMETER_11
|
||||
STATUS_INVALID_PARAMETER_12
|
||||
STATUS_INVALID_PARAMETER_2
|
||||
STATUS_INVALID_PARAMETER_3
|
||||
STATUS_INVALID_PARAMETER_4
|
||||
STATUS_INVALID_PARAMETER_5
|
||||
STATUS_INVALID_PARAMETER_6
|
||||
STATUS_INVALID_PARAMETER_7
|
||||
STATUS_INVALID_PARAMETER_8
|
||||
STATUS_INVALID_PARAMETER_9
|
||||
STATUS_INVALID_PARAMETER_MIX
|
||||
STATUS_INVALID_PIPE_STATE
|
||||
STATUS_INVALID_PLUGPLAY_DEVICE_PATH
|
||||
STATUS_INVALID_PORT_ATTRIBUTES
|
||||
STATUS_INVALID_PORT_HANDLE
|
||||
STATUS_INVALID_PRIMARY_GROUP
|
||||
STATUS_INVALID_QUOTA_LOWER
|
||||
STATUS_INVALID_READ_MODE
|
||||
STATUS_INVALID_SECURITY_DESCR
|
||||
STATUS_INVALID_SERVER_STATE
|
||||
STATUS_INVALID_SID
|
||||
STATUS_INVALID_SUB_AUTHORITY
|
||||
STATUS_INVALID_SYSTEM_SERVICE
|
||||
STATUS_INVALID_UNWIND_TARGET
|
||||
STATUS_INVALID_USER_BUFFER
|
||||
STATUS_INVALID_VARIANT
|
||||
STATUS_INVALID_VIEW_SIZE
|
||||
STATUS_INVALID_VLM_OPERATION
|
||||
STATUS_INVALID_VOLUME_LABEL
|
||||
STATUS_INVALID_WORKSTATION
|
||||
STATUS_IN_PAGE_ERROR
|
||||
STATUS_IO_DEVICE_ERROR
|
||||
STATUS_IO_PRIVILEGE_FAILED
|
||||
STATUS_IO_REPARSE_DATA_INVALID
|
||||
STATUS_IO_REPARSE_TAG_INVALID
|
||||
STATUS_IO_REPARSE_TAG_MISMATCH
|
||||
STATUS_IO_REPARSE_TAG_NOT_HANDLED
|
||||
STATUS_IO_TIMEOUT
|
||||
STATUS_IP_ADDRESS_CONFLICT1
|
||||
STATUS_IP_ADDRESS_CONFLICT2
|
||||
STATUS_KERNEL_APC
|
||||
STATUS_KEY_DELETED
|
||||
STATUS_KEY_HAS_CHILDREN
|
||||
STATUS_LAST_ADMIN
|
||||
STATUS_LICENSE_QUOTA_EXCEEDED
|
||||
STATUS_LICENSE_VIOLATION
|
||||
STATUS_LINK_FAILED
|
||||
STATUS_LINK_TIMEOUT
|
||||
STATUS_LM_CROSS_ENCRYPTION_REQUIRED
|
||||
STATUS_LOCAL_DISCONNECT
|
||||
STATUS_LOCAL_USER_SESSION_KEY
|
||||
STATUS_LOCK_NOT_GRANTED
|
||||
STATUS_LOGIN_TIME_RESTRICTION
|
||||
STATUS_LOGIN_WKSTA_RESTRICTION
|
||||
STATUS_LOGON_FAILURE
|
||||
STATUS_LOGON_NOT_GRANTED
|
||||
STATUS_LOGON_SERVER_CONFLICT
|
||||
STATUS_LOGON_SESSION_COLLISION
|
||||
STATUS_LOGON_SESSION_EXISTS
|
||||
STATUS_LOGON_TYPE_NOT_GRANTED
|
||||
STATUS_LOG_FILE_FULL
|
||||
STATUS_LOG_HARD_ERROR
|
||||
STATUS_LONGJUMP
|
||||
STATUS_LOST_WRITEBEHIND_DATA
|
||||
STATUS_LPC_REPLY_LOST
|
||||
STATUS_LUIDS_EXHAUSTED
|
||||
STATUS_MAPPED_ALIGNMENT
|
||||
STATUS_MAPPED_FILE_SIZE_ZERO
|
||||
STATUS_MARSHALL_OVERFLOW
|
||||
STATUS_MEDIA_CHANGED
|
||||
STATUS_MEDIA_CHECK
|
||||
STATUS_MEDIA_WRITE_PROTECTED
|
||||
STATUS_MEMBERS_PRIMARY_GROUP
|
||||
STATUS_MEMBER_IN_ALIAS
|
||||
STATUS_MEMBER_IN_GROUP
|
||||
STATUS_MEMBER_NOT_IN_ALIAS
|
||||
STATUS_MEMBER_NOT_IN_GROUP
|
||||
STATUS_MEMORY_NOT_ALLOCATED
|
||||
STATUS_MESSAGE_NOT_FOUND
|
||||
STATUS_MISSING_SYSTEMFILE
|
||||
STATUS_MORE_ENTRIES
|
||||
STATUS_MORE_PROCESSING_REQUIRED
|
||||
STATUS_MUTANT_LIMIT_EXCEEDED
|
||||
STATUS_MUTANT_NOT_OWNED
|
||||
STATUS_NAME_TOO_LONG
|
||||
STATUS_NETLOGON_NOT_STARTED
|
||||
STATUS_NETWORK_ACCESS_DENIED
|
||||
STATUS_NETWORK_BUSY
|
||||
STATUS_NETWORK_CREDENTIAL_CONFLICT
|
||||
STATUS_NETWORK_NAME_DELETED
|
||||
STATUS_NETWORK_UNREACHABLE
|
||||
STATUS_NET_WRITE_FAULT
|
||||
STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT
|
||||
STATUS_NOLOGON_SERVER_TRUST_ACCOUNT
|
||||
STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT
|
||||
STATUS_NONCONTINUABLE_EXCEPTION
|
||||
STATUS_NONEXISTENT_EA_ENTRY
|
||||
STATUS_NONEXISTENT_SECTOR
|
||||
STATUS_NONE_MAPPED
|
||||
STATUS_NOTIFY_CLEANUP
|
||||
STATUS_NOTIFY_ENUM_DIR
|
||||
STATUS_NOT_ALL_ASSIGNED
|
||||
STATUS_NOT_A_DIRECTORY
|
||||
STATUS_NOT_A_REPARSE_POINT
|
||||
STATUS_NOT_CLIENT_SESSION
|
||||
STATUS_NOT_COMMITTED
|
||||
STATUS_NOT_FOUND
|
||||
STATUS_NOT_IMPLEMENTED
|
||||
STATUS_NOT_LOCKED
|
||||
STATUS_NOT_LOGON_PROCESS
|
||||
STATUS_NOT_MAPPED_DATA
|
||||
STATUS_NOT_MAPPED_VIEW
|
||||
STATUS_NOT_REGISTRY_FILE
|
||||
STATUS_NOT_SAME_DEVICE
|
||||
STATUS_NOT_SERVER_SESSION
|
||||
STATUS_NOT_SUPPORTED
|
||||
STATUS_NOT_TINY_STREAM
|
||||
STATUS_NO_BROWSER_SERVERS_FOUND
|
||||
STATUS_NO_CALLBACK_ACTIVE
|
||||
STATUS_NO_DATA_DETECTED
|
||||
STATUS_NO_EAS_ON_FILE
|
||||
STATUS_NO_EVENT_PAIR
|
||||
STATUS_NO_GUID_TRANSLATION
|
||||
STATUS_NO_IMPERSONATION_TOKEN
|
||||
STATUS_NO_INHERITANCE
|
||||
STATUS_NO_LDT
|
||||
STATUS_NO_LOGON_SERVERS
|
||||
STATUS_NO_LOG_SPACE
|
||||
STATUS_NO_MATCH
|
||||
STATUS_NO_MEDIA
|
||||
STATUS_NO_MEDIA_IN_DEVICE
|
||||
STATUS_NO_MEMORY
|
||||
STATUS_NO_MORE_EAS
|
||||
STATUS_NO_MORE_ENTRIES
|
||||
STATUS_NO_MORE_FILES
|
||||
STATUS_NO_MORE_MATCHES
|
||||
STATUS_NO_PAGEFILE
|
||||
STATUS_NO_QUOTAS_NO_ACCOUNT
|
||||
STATUS_NO_SECURITY_ON_OBJECT
|
||||
STATUS_NO_SPOOL_SPACE
|
||||
STATUS_NO_SUCH_ALIAS
|
||||
STATUS_NO_SUCH_DEVICE
|
||||
STATUS_NO_SUCH_DOMAIN
|
||||
STATUS_NO_SUCH_FILE
|
||||
STATUS_NO_SUCH_GROUP
|
||||
STATUS_NO_SUCH_LOGON_SESSION
|
||||
STATUS_NO_SUCH_MEMBER
|
||||
STATUS_NO_SUCH_PACKAGE
|
||||
STATUS_NO_SUCH_PRIVILEGE
|
||||
STATUS_NO_SUCH_USER
|
||||
STATUS_NO_TOKEN
|
||||
STATUS_NO_TRUST_LSA_SECRET
|
||||
STATUS_NO_TRUST_SAM_ACCOUNT
|
||||
STATUS_NO_USER_SESSION_KEY
|
||||
STATUS_NO_YIELD_PERFORMED
|
||||
STATUS_NT_CROSS_ENCRYPTION_REQUIRED
|
||||
STATUS_NULL_LM_PASSWORD
|
||||
STATUS_OBJECTID_EXISTS
|
||||
STATUS_OBJECT_EXISTS
|
||||
STATUS_OBJECT_NAME_COLLISION
|
||||
STATUS_OBJECT_NAME_EXISTS
|
||||
STATUS_OBJECT_NAME_INVALID
|
||||
STATUS_OBJECT_NAME_NOT_FOUND
|
||||
STATUS_OBJECT_PATH_INVALID
|
||||
STATUS_OBJECT_PATH_NOT_FOUND
|
||||
STATUS_OBJECT_PATH_SYNTAX_BAD
|
||||
STATUS_OBJECT_TYPE_MISMATCH
|
||||
STATUS_OPEN_FAILED
|
||||
STATUS_OPLOCK_BREAK_IN_PROCESS
|
||||
STATUS_OPLOCK_NOT_GRANTED
|
||||
STATUS_ORDINAL_NOT_FOUND
|
||||
STATUS_PAGEFILE_CREATE_FAILED
|
||||
STATUS_PAGEFILE_QUOTA
|
||||
STATUS_PAGEFILE_QUOTA_EXCEEDED
|
||||
STATUS_PARITY_ERROR
|
||||
STATUS_PARTIAL_COPY
|
||||
STATUS_PARTITION_FAILURE
|
||||
STATUS_PASSWORD_EXPIRED
|
||||
STATUS_PASSWORD_MUST_CHANGE
|
||||
STATUS_PASSWORD_RESTRICTION
|
||||
STATUS_PATH_NOT_COVERED
|
||||
STATUS_PENDING
|
||||
STATUS_PIPE_BROKEN
|
||||
STATUS_PIPE_BUSY
|
||||
STATUS_PIPE_CLOSING
|
||||
STATUS_PIPE_CONNECTED
|
||||
STATUS_PIPE_DISCONNECTED
|
||||
STATUS_PIPE_EMPTY
|
||||
STATUS_PIPE_LISTENING
|
||||
STATUS_PIPE_NOT_AVAILABLE
|
||||
STATUS_PLUGPLAY_NO_DEVICE
|
||||
STATUS_PORT_ALREADY_SET
|
||||
STATUS_PORT_CONNECTION_REFUSED
|
||||
STATUS_PORT_DISCONNECTED
|
||||
STATUS_PORT_MESSAGE_TOO_LONG
|
||||
STATUS_PORT_UNREACHABLE
|
||||
STATUS_POSSIBLE_DEADLOCK
|
||||
STATUS_PREDEFINED_HANDLE
|
||||
STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED
|
||||
STATUS_PRINT_CANCELLED
|
||||
STATUS_PRINT_QUEUE_FULL
|
||||
STATUS_PRIVILEGED_INSTRUCTION
|
||||
STATUS_PRIVILEGE_NOT_HELD
|
||||
STATUS_PROCEDURE_NOT_FOUND
|
||||
STATUS_PROCESS_IN_JOB
|
||||
STATUS_PROCESS_IS_TERMINATING
|
||||
STATUS_PROCESS_NOT_IN_JOB
|
||||
STATUS_PROFILING_AT_LIMIT
|
||||
STATUS_PROFILING_NOT_STARTED
|
||||
STATUS_PROFILING_NOT_STOPPED
|
||||
STATUS_PROPSET_NOT_FOUND
|
||||
STATUS_PROTOCOL_UNREACHABLE
|
||||
STATUS_PWD_HISTORY_CONFLICT
|
||||
STATUS_PWD_TOO_RECENT
|
||||
STATUS_PWD_TOO_SHORT
|
||||
STATUS_QUOTA_EXCEEDED
|
||||
STATUS_QUOTA_LIST_INCONSISTENT
|
||||
STATUS_RANGE_LIST_CONFLICT
|
||||
STATUS_RANGE_NOT_FOUND
|
||||
STATUS_RANGE_NOT_LOCKED
|
||||
STATUS_RECEIVE_EXPEDITED
|
||||
STATUS_RECEIVE_PARTIAL
|
||||
STATUS_RECEIVE_PARTIAL_EXPEDITED
|
||||
STATUS_RECOVERY_FAILURE
|
||||
STATUS_REDIRECTOR_HAS_OPEN_HANDLES
|
||||
STATUS_REDIRECTOR_NOT_STARTED
|
||||
STATUS_REDIRECTOR_PAUSED
|
||||
STATUS_REDIRECTOR_STARTED
|
||||
STATUS_REGISTRY_CORRUPT
|
||||
STATUS_REGISTRY_IO_FAILED
|
||||
STATUS_REGISTRY_QUOTA_LIMIT
|
||||
STATUS_REGISTRY_RECOVERED
|
||||
STATUS_REMOTE_DISCONNECT
|
||||
STATUS_REMOTE_NOT_LISTENING
|
||||
STATUS_REMOTE_RESOURCES
|
||||
STATUS_REMOTE_SESSION_LIMIT
|
||||
STATUS_REPARSE
|
||||
STATUS_REPLY_MESSAGE_MISMATCH
|
||||
STATUS_REQUEST_ABORTED
|
||||
STATUS_REQUEST_NOT_ACCEPTED
|
||||
STATUS_RESOURCE_DATA_NOT_FOUND
|
||||
STATUS_RESOURCE_LANG_NOT_FOUND
|
||||
STATUS_RESOURCE_NAME_NOT_FOUND
|
||||
STATUS_RESOURCE_NOT_OWNED
|
||||
STATUS_RESOURCE_TYPE_NOT_FOUND
|
||||
STATUS_RETRY
|
||||
STATUS_REVISION_MISMATCH
|
||||
STATUS_RXACT_COMMITTED
|
||||
STATUS_RXACT_COMMIT_FAILURE
|
||||
STATUS_RXACT_COMMIT_NECESSARY
|
||||
STATUS_RXACT_INVALID_STATE
|
||||
STATUS_RXACT_STATE_CREATED
|
||||
STATUS_SAM_INIT_FAILURE
|
||||
STATUS_SECRET_TOO_LONG
|
||||
STATUS_SECTION_NOT_EXTENDED
|
||||
STATUS_SECTION_NOT_IMAGE
|
||||
STATUS_SECTION_PROTECTION
|
||||
STATUS_SECTION_TOO_BIG
|
||||
STATUS_SEGMENT_NOTIFICATION
|
||||
STATUS_SEMAPHORE_LIMIT_EXCEEDED
|
||||
STATUS_SERIAL_COUNTER_TIMEOUT
|
||||
STATUS_SERIAL_MORE_WRITES
|
||||
STATUS_SERIAL_NO_DEVICE_INITED
|
||||
STATUS_SERVER_DISABLED
|
||||
STATUS_SERVER_HAS_OPEN_HANDLES
|
||||
STATUS_SERVER_NOT_DISABLED
|
||||
STATUS_SERVICE_NOTIFICATION
|
||||
STATUS_SETMARK_DETECTED
|
||||
STATUS_SHARED_IRQ_BUSY
|
||||
STATUS_SHARING_PAUSED
|
||||
STATUS_SHARING_VIOLATION
|
||||
STATUS_SINGLE_STEP
|
||||
STATUS_SOME_NOT_MAPPED
|
||||
STATUS_SPECIAL_ACCOUNT
|
||||
STATUS_SPECIAL_GROUP
|
||||
STATUS_SPECIAL_USER
|
||||
STATUS_STACK_OVERFLOW
|
||||
STATUS_STACK_OVERFLOW_READ
|
||||
STATUS_SUCCESS
|
||||
STATUS_SUSPEND_COUNT_EXCEEDED
|
||||
STATUS_SYNCHRONIZATION_REQUIRED
|
||||
STATUS_SYSTEM_PROCESS_TERMINATED
|
||||
STATUS_THREAD_IS_TERMINATING
|
||||
STATUS_THREAD_NOT_IN_PROCESS
|
||||
STATUS_THREAD_WAS_SUSPENDED
|
||||
STATUS_TIMEOUT
|
||||
STATUS_TIMER_NOT_CANCELED
|
||||
STATUS_TIMER_RESOLUTION_NOT_SET
|
||||
STATUS_TIMER_RESUME_IGNORED
|
||||
STATUS_TIME_DIFFERENCE_AT_DC
|
||||
STATUS_TOKEN_ALREADY_IN_USE
|
||||
STATUS_TOO_LATE
|
||||
STATUS_TOO_MANY_ADDRESSES
|
||||
STATUS_TOO_MANY_COMMANDS
|
||||
STATUS_TOO_MANY_CONTEXT_IDS
|
||||
STATUS_TOO_MANY_GUIDS_REQUESTED
|
||||
STATUS_TOO_MANY_LINKS
|
||||
STATUS_TOO_MANY_LUIDS_REQUESTED
|
||||
STATUS_TOO_MANY_NAMES
|
||||
STATUS_TOO_MANY_NODES
|
||||
STATUS_TOO_MANY_OPENED_FILES
|
||||
STATUS_TOO_MANY_PAGING_FILES
|
||||
STATUS_TOO_MANY_SECRETS
|
||||
STATUS_TOO_MANY_SESSIONS
|
||||
STATUS_TOO_MANY_SIDS
|
||||
STATUS_TOO_MANY_THREADS
|
||||
STATUS_TRANSACTION_ABORTED
|
||||
STATUS_TRANSACTION_INVALID_ID
|
||||
STATUS_TRANSACTION_INVALID_TYPE
|
||||
STATUS_TRANSACTION_NO_MATCH
|
||||
STATUS_TRANSACTION_NO_RELEASE
|
||||
STATUS_TRANSACTION_RESPONDED
|
||||
STATUS_TRANSACTION_TIMED_OUT
|
||||
STATUS_TRUSTED_DOMAIN_FAILURE
|
||||
STATUS_TRUSTED_RELATIONSHIP_FAILURE
|
||||
STATUS_TRUST_FAILURE
|
||||
STATUS_UNABLE_TO_DECOMMIT_VM
|
||||
STATUS_UNABLE_TO_DELETE_SECTION
|
||||
STATUS_UNABLE_TO_FREE_VM
|
||||
STATUS_UNABLE_TO_LOCK_MEDIA
|
||||
STATUS_UNABLE_TO_UNLOAD_MEDIA
|
||||
STATUS_UNDEFINED_CHARACTER
|
||||
STATUS_UNEXPECTED_IO_ERROR
|
||||
STATUS_UNEXPECTED_MM_CREATE_ERR
|
||||
STATUS_UNEXPECTED_MM_EXTEND_ERR
|
||||
STATUS_UNEXPECTED_MM_MAP_ERROR
|
||||
STATUS_UNEXPECTED_NETWORK_ERROR
|
||||
STATUS_UNHANDLED_EXCEPTION
|
||||
STATUS_UNKNOWN_REVISION
|
||||
STATUS_UNMAPPABLE_CHARACTER
|
||||
STATUS_UNRECOGNIZED_MEDIA
|
||||
STATUS_UNRECOGNIZED_VOLUME
|
||||
STATUS_UNSUCCESSFUL
|
||||
STATUS_UNSUPPORTED_COMPRESSION
|
||||
STATUS_UNWIND
|
||||
STATUS_USER_APC
|
||||
STATUS_USER_EXISTS
|
||||
STATUS_USER_MAPPED_FILE
|
||||
STATUS_USER_SESSION_DELETED
|
||||
STATUS_VALIDATE_CONTINUE
|
||||
STATUS_VARIABLE_NOT_FOUND
|
||||
STATUS_VDM_HARD_ERROR
|
||||
STATUS_VERIFY_REQUIRED
|
||||
STATUS_VIRTUAL_CIRCUIT_CLOSED
|
||||
STATUS_VOLUME_DISMOUNTED
|
||||
STATUS_VOLUME_MOUNTED
|
||||
STATUS_WAIT_0
|
||||
STATUS_WAIT_63
|
||||
STATUS_WAKE_SYSTEM_DEBUGGER
|
||||
STATUS_WAS_LOCKED
|
||||
STATUS_WAS_UNLOCKED
|
||||
STATUS_WORKING_SET_LIMIT_RANGE
|
||||
STATUS_WORKING_SET_QUOTA
|
||||
STATUS_WRONG_PASSWORD
|
||||
STATUS_WRONG_PASSWORD_CORE
|
||||
STATUS_WRONG_VOLUME
|
||||
STATUS_WX86_BREAKPOINT
|
||||
STATUS_WX86_CONTINUE
|
||||
STATUS_WX86_CREATEWX86TIB
|
||||
STATUS_WX86_EXCEPTION_CHAIN
|
||||
STATUS_WX86_EXCEPTION_CONTINUE
|
||||
STATUS_WX86_EXCEPTION_LASTCHANCE
|
||||
STATUS_WX86_FLOAT_STACK_CHECK
|
||||
STATUS_WX86_INTERNAL_ERROR
|
||||
STATUS_WX86_SINGLE_STEP
|
||||
STATUS_WX86_UNSIMULATE
|
@@ -18,7 +18,7 @@ Don't you know going around dereferncing null pointers all day can be hazardous
|
||||
Well, duh!
|
||||
There's a bit in cr3 for problems like that.
|
||||
Just add a field to the %stru% to keep track of it!
|
||||
Don't worry about it... the garbage collector in %module% will clean it up for you.
|
||||
Don't worry about it... the garbage collector in the kernel will clean it up for you.
|
||||
Did I do that?
|
||||
Didn't %dev% fix that already?
|
||||
Yes, I think I've seen that bug before... no... that was another program.
|
||||
@@ -43,7 +43,7 @@ Hmm.. that seems to have been introduced by my last commit... I bet CVS mixed up
|
||||
It can't possibly be my fault, so I don't care.
|
||||
I'm not experiencing that problem, perhaps it's all in your mind.
|
||||
Well... like a good friend of mine said... "Don't Panic!"
|
||||
It just shows you how far ReactOS has come along! A %period% ago a bug like that wouldn't have even been possible!
|
||||
It just shows you how far ReactOS has come along! A year ago a bug like that wouldn't have even been possible!
|
||||
Just surround the code with an #if 0/#endif block, it solves all my problems!
|
||||
You know.. if %dev% would just finish %module% for us, we wouldn't be having this problem.
|
||||
I say we move on to the next function, since we can't seem to figure this one out.
|
||||
@@ -54,20 +54,8 @@ ask %dev%
|
||||
Thank you for that amazingly keen insight, Commander Obvious.
|
||||
Sorry, can't help you right now, trying to track down this bug %dev% caused in %module%
|
||||
I dont know about that, but I just fixed a problem in %module% for %dev%
|
||||
How should I know? I'm still trying to figure out this main() thing... ooh! wanna see what I did in %module%?
|
||||
How should I know? I'm still trying to figure out this main() thing... ooh! wanna see what I did in the kernel?
|
||||
lol!
|
||||
*wink*
|
||||
;)
|
||||
42
|
||||
It's gonna take me over %period% to fix all %dev%'s bugs in %module% :(
|
||||
How could %func% return %status%!? It bet %dev% broke it! I didn't touch it... honest! no.. really! (me hides)
|
||||
It's fine if you get %status% there ... just ignore the destruction, and call %func% instead.
|
||||
%dev% said %status% isn't really an error in this context because we expect %module% to be toast by now
|
||||
heh, I'm still trying to figure out why %func% is returning %status% when I call it from %module%...
|
||||
%dev% said it's okay to ignore that as long as you're below %irql%
|
||||
erm, what do you mean?
|
||||
damn, I do that all the time
|
||||
if you want a reply that sounds right, I'd say that %func% support for that is vital to the future of %module%
|
||||
Sounds like you're having a problem with %func%. I hate that thing... don't talk to me about it.
|
||||
Just return %status% and forget about it. Someone else will fix it, later.
|
||||
Blah blah blah... sheesh... can't you figure out *anything*?
|
||||
It's gonna take me %period%s to fix all %dev%'s bugs in %module% :(
|
File diff suppressed because it is too large
Load Diff
@@ -1,321 +0,0 @@
|
||||
<?xml version="1.0" ?>
|
||||
<WindowMessageList>
|
||||
<WindowMessage text="WM_APP" value="32768" />
|
||||
<WindowMessage text="WM_ACTIVATE" value="6" />
|
||||
<WindowMessage text="WM_ACTIVATEAPP" value="28" />
|
||||
<WindowMessage text="WM_AFXFIRST" value="864" />
|
||||
<WindowMessage text="WM_AFXLAST" value="895" />
|
||||
<WindowMessage text="WM_ASKCBFORMATNAME" value="780" />
|
||||
<WindowMessage text="WM_CANCELJOURNAL" value="75" />
|
||||
<WindowMessage text="WM_CANCELMODE" value="31" />
|
||||
<WindowMessage text="WM_CAPTURECHANGED" value="533" />
|
||||
<WindowMessage text="WM_CHANGECBCHAIN" value="781" />
|
||||
<WindowMessage text="WM_CHANGEUISTATE" value="295" />
|
||||
<WindowMessage text="WM_UPDATEUISTATE" value="296" />
|
||||
<WindowMessage text="WM_QUERYUISTATE" value="297" />
|
||||
<WindowMessage text="WM_CHAR" value="258" />
|
||||
<WindowMessage text="WM_CHARTOITEM" value="47" />
|
||||
<WindowMessage text="WM_CHILDACTIVATE" value="34" />
|
||||
<WindowMessage text="WM_CLEAR" value="771" />
|
||||
<WindowMessage text="WM_CLOSE" value="16" />
|
||||
<WindowMessage text="WM_COMMAND" value="273" />
|
||||
<WindowMessage text="WM_COMMNOTIFY" value="68" />
|
||||
<WindowMessage text="WM_COMPACTING" value="65" />
|
||||
<WindowMessage text="WM_COMPAREITEM" value="57" />
|
||||
<WindowMessage text="WM_CONTEXTMENU" value="123" />
|
||||
<WindowMessage text="WM_COPY" value="769" />
|
||||
<WindowMessage text="WM_COPYDATA" value="74" />
|
||||
<WindowMessage text="WM_CREATE" value="1" />
|
||||
<WindowMessage text="WM_CTLCOLORBTN" value="309" />
|
||||
<WindowMessage text="WM_CTLCOLORDLG" value="310" />
|
||||
<WindowMessage text="WM_CTLCOLOREDIT" value="307" />
|
||||
<WindowMessage text="WM_CTLCOLORLISTBOX" value="308" />
|
||||
<WindowMessage text="WM_CTLCOLORMSGBOX" value="306" />
|
||||
<WindowMessage text="WM_CTLCOLORSCROLLBAR" value="311" />
|
||||
<WindowMessage text="WM_CTLCOLORSTATIC" value="312" />
|
||||
<WindowMessage text="WM_CUT" value="768" />
|
||||
<WindowMessage text="WM_DEADCHAR" value="259" />
|
||||
<WindowMessage text="WM_DELETEITEM" value="45" />
|
||||
<WindowMessage text="WM_DESTROY" value="2" />
|
||||
<WindowMessage text="WM_DESTROYCLIPBOARD" value="775" />
|
||||
<WindowMessage text="WM_DEVICECHANGE" value="537" />
|
||||
<WindowMessage text="WM_DEVMODECHANGE" value="27" />
|
||||
<WindowMessage text="WM_DISPLAYCHANGE" value="126" />
|
||||
<WindowMessage text="WM_DRAWCLIPBOARD" value="776" />
|
||||
<WindowMessage text="WM_DRAWITEM" value="43" />
|
||||
<WindowMessage text="WM_DROPFILES" value="563" />
|
||||
<WindowMessage text="WM_ENABLE" value="10" />
|
||||
<WindowMessage text="WM_ENDSESSION" value="22" />
|
||||
<WindowMessage text="WM_ENTERIDLE" value="289" />
|
||||
<WindowMessage text="WM_ENTERMENULOOP" value="529" />
|
||||
<WindowMessage text="WM_ENTERSIZEMOVE" value="561" />
|
||||
<WindowMessage text="WM_ERASEBKGND" value="20" />
|
||||
<WindowMessage text="WM_EXITMENULOOP" value="530" />
|
||||
<WindowMessage text="WM_EXITSIZEMOVE" value="562" />
|
||||
<WindowMessage text="WM_FONTCHANGE" value="29" />
|
||||
<WindowMessage text="WM_GETDLGCODE" value="135" />
|
||||
<WindowMessage text="WM_GETFONT" value="49" />
|
||||
<WindowMessage text="WM_GETHOTKEY" value="51" />
|
||||
<WindowMessage text="WM_GETICON" value="127" />
|
||||
<WindowMessage text="WM_GETMINMAXINFO" value="36" />
|
||||
<WindowMessage text="WM_GETTEXT" value="13" />
|
||||
<WindowMessage text="WM_GETTEXTLENGTH" value="14" />
|
||||
<WindowMessage text="WM_HANDHELDFIRST" value="856" />
|
||||
<WindowMessage text="WM_HANDHELDLAST" value="863" />
|
||||
<WindowMessage text="WM_HELP" value="83" />
|
||||
<WindowMessage text="WM_HOTKEY" value="786" />
|
||||
<WindowMessage text="WM_HSCROLL" value="276" />
|
||||
<WindowMessage text="WM_HSCROLLCLIPBOARD" value="782" />
|
||||
<WindowMessage text="WM_ICONERASEBKGND" value="39" />
|
||||
<WindowMessage text="WM_INITDIALOG" value="272" />
|
||||
<WindowMessage text="WM_INITMENU" value="278" />
|
||||
<WindowMessage text="WM_INITMENUPOPUP" value="279" />
|
||||
<WindowMessage text="WM_INPUTLANGCHANGE" value="81" />
|
||||
<WindowMessage text="WM_INPUTLANGCHANGEREQUEST" value="80" />
|
||||
<WindowMessage text="WM_KEYDOWN" value="256" />
|
||||
<WindowMessage text="WM_KEYUP" value="257" />
|
||||
<WindowMessage text="WM_KILLFOCUS" value="8" />
|
||||
<WindowMessage text="WM_MDIACTIVATE" value="546" />
|
||||
<WindowMessage text="WM_MDICASCADE" value="551" />
|
||||
<WindowMessage text="WM_MDICREATE" value="544" />
|
||||
<WindowMessage text="WM_MDIDESTROY" value="545" />
|
||||
<WindowMessage text="WM_MDIGETACTIVE" value="553" />
|
||||
<WindowMessage text="WM_MDIICONARRANGE" value="552" />
|
||||
<WindowMessage text="WM_MDIMAXIMIZE" value="549" />
|
||||
<WindowMessage text="WM_MDINEXT" value="548" />
|
||||
<WindowMessage text="WM_MDIREFRESHMENU" value="564" />
|
||||
<WindowMessage text="WM_MDIRESTORE" value="547" />
|
||||
<WindowMessage text="WM_MDISETMENU" value="560" />
|
||||
<WindowMessage text="WM_MDITILE" value="550" />
|
||||
<WindowMessage text="WM_MEASUREITEM" value="44" />
|
||||
<WindowMessage text="WM_MENURBUTTONUP" value="290" />
|
||||
<WindowMessage text="WM_MENUCHAR" value="288" />
|
||||
<WindowMessage text="WM_MENUSELECT" value="287" />
|
||||
<WindowMessage text="WM_NEXTMENU" value="531" />
|
||||
<WindowMessage text="WM_MOVE" value="3" />
|
||||
<WindowMessage text="WM_MOVING" value="534" />
|
||||
<WindowMessage text="WM_NCACTIVATE" value="134" />
|
||||
<WindowMessage text="WM_NCCALCSIZE" value="131" />
|
||||
<WindowMessage text="WM_NCCREATE" value="129" />
|
||||
<WindowMessage text="WM_NCDESTROY" value="130" />
|
||||
<WindowMessage text="WM_NCHITTEST" value="132" />
|
||||
<WindowMessage text="WM_NCLBUTTONDBLCLK" value="163" />
|
||||
<WindowMessage text="WM_NCLBUTTONDOWN" value="161" />
|
||||
<WindowMessage text="WM_NCLBUTTONUP" value="162" />
|
||||
<WindowMessage text="WM_NCMBUTTONDBLCLK" value="169" />
|
||||
<WindowMessage text="WM_NCMBUTTONDOWN" value="167" />
|
||||
<WindowMessage text="WM_NCMBUTTONUP" value="168" />
|
||||
<WindowMessage text="WM_NCXBUTTONDOWN" value="171" />
|
||||
<WindowMessage text="WM_NCXBUTTONUP" value="172" />
|
||||
<WindowMessage text="WM_NCXBUTTONDBLCLK" value="173" />
|
||||
<WindowMessage text="WM_NCMOUSEMOVE" value="160" />
|
||||
<WindowMessage text="WM_NCMOUSEHOVER" value="0x02A0" />
|
||||
<WindowMessage text="WM_NCMOUSELEAVE" value="0x02A2" />
|
||||
<WindowMessage text="WM_NCPAINT" value="133" />
|
||||
<WindowMessage text="WM_NCRBUTTONDBLCLK" value="166" />
|
||||
<WindowMessage text="WM_NCRBUTTONDOWN" value="164" />
|
||||
<WindowMessage text="WM_NCRBUTTONUP" value="165" />
|
||||
<WindowMessage text="WM_NEXTDLGCTL" value="40" />
|
||||
<WindowMessage text="WM_NEXTMENU" value="531" />
|
||||
<WindowMessage text="WM_NOTIFY" value="78" />
|
||||
<WindowMessage text="WM_NOTIFYFORMAT" value="85" />
|
||||
<WindowMessage text="WM_NULL" value="0" />
|
||||
<WindowMessage text="WM_PAINT" value="15" />
|
||||
<WindowMessage text="WM_PAINTCLIPBOARD" value="777" />
|
||||
<WindowMessage text="WM_PAINTICON" value="38" />
|
||||
<WindowMessage text="WM_PALETTECHANGED" value="785" />
|
||||
<WindowMessage text="WM_PALETTEISCHANGING" value="784" />
|
||||
<WindowMessage text="WM_PARENTNOTIFY" value="528" />
|
||||
<WindowMessage text="WM_PASTE" value="770" />
|
||||
<WindowMessage text="WM_PENWINFIRST" value="896" />
|
||||
<WindowMessage text="WM_PENWINLAST" value="911" />
|
||||
<WindowMessage text="WM_POWER" value="72" />
|
||||
<WindowMessage text="WM_POWERBROADCAST" value="536" />
|
||||
<WindowMessage text="WM_PRINT" value="791" />
|
||||
<WindowMessage text="WM_PRINTCLIENT" value="792" />
|
||||
<WindowMessage text="WM_QUERYDRAGICON" value="55" />
|
||||
<WindowMessage text="WM_QUERYENDSESSION" value="17" />
|
||||
<WindowMessage text="WM_QUERYNEWPALETTE" value="783" />
|
||||
<WindowMessage text="WM_QUERYOPEN" value="19" />
|
||||
<WindowMessage text="WM_QUEUESYNC" value="35" />
|
||||
<WindowMessage text="WM_QUIT" value="18" />
|
||||
<WindowMessage text="WM_RENDERALLFORMATS" value="774" />
|
||||
<WindowMessage text="WM_RENDERFORMAT" value="773" />
|
||||
<WindowMessage text="WM_SETCURSOR" value="32" />
|
||||
<WindowMessage text="WM_SETFOCUS" value="7" />
|
||||
<WindowMessage text="WM_SETFONT" value="48" />
|
||||
<WindowMessage text="WM_SETHOTKEY" value="50" />
|
||||
<WindowMessage text="WM_SETICON" value="128" />
|
||||
<WindowMessage text="WM_SETREDRAW" value="11" />
|
||||
<WindowMessage text="WM_SETTEXT" value="12" />
|
||||
<WindowMessage text="WM_SETTINGCHANGE" value="26" />
|
||||
<WindowMessage text="WM_SHOWWINDOW" value="24" />
|
||||
<WindowMessage text="WM_SIZE" value="5" />
|
||||
<WindowMessage text="WM_SIZECLIPBOARD" value="779" />
|
||||
<WindowMessage text="WM_SIZING" value="532" />
|
||||
<WindowMessage text="WM_SPOOLERSTATUS" value="42" />
|
||||
<WindowMessage text="WM_STYLECHANGED" value="125" />
|
||||
<WindowMessage text="WM_STYLECHANGING" value="124" />
|
||||
<WindowMessage text="WM_SYSCHAR" value="262" />
|
||||
<WindowMessage text="WM_SYSCOLORCHANGE" value="21" />
|
||||
<WindowMessage text="WM_SYSCOMMAND" value="274" />
|
||||
<WindowMessage text="WM_SYSDEADCHAR" value="263" />
|
||||
<WindowMessage text="WM_SYSKEYDOWN" value="260" />
|
||||
<WindowMessage text="WM_SYSKEYUP" value="261" />
|
||||
<WindowMessage text="WM_TCARD" value="82" />
|
||||
<WindowMessage text="WM_TIMECHANGE" value="30" />
|
||||
<WindowMessage text="WM_TIMER" value="275" />
|
||||
<WindowMessage text="WM_SYSTIMER" value="280" />
|
||||
<WindowMessage text="WM_UNDO" value="772" />
|
||||
<WindowMessage text="WM_USER" value="1024" />
|
||||
<WindowMessage text="WM_USERCHANGED" value="84" />
|
||||
<WindowMessage text="WM_VKEYTOITEM" value="46" />
|
||||
<WindowMessage text="WM_VSCROLL" value="277" />
|
||||
<WindowMessage text="WM_VSCROLLCLIPBOARD" value="778" />
|
||||
<WindowMessage text="WM_WINDOWPOSCHANGED" value="71" />
|
||||
<WindowMessage text="WM_WINDOWPOSCHANGING" value="70" />
|
||||
<WindowMessage text="WM_WININICHANGE" value="26" />
|
||||
<WindowMessage text="WM_KEYFIRST" value="256" />
|
||||
<WindowMessage text="WM_KEYLAST" value="264" />
|
||||
<WindowMessage text="WM_SYNCPAINT" value="136" />
|
||||
<WindowMessage text="WM_MOUSEACTIVATE" value="33" />
|
||||
<WindowMessage text="WM_MOUSEMOVE" value="512" />
|
||||
<WindowMessage text="WM_LBUTTONDOWN" value="513" />
|
||||
<WindowMessage text="WM_LBUTTONUP" value="514" />
|
||||
<WindowMessage text="WM_LBUTTONDBLCLK" value="515" />
|
||||
<WindowMessage text="WM_RBUTTONDOWN" value="516" />
|
||||
<WindowMessage text="WM_RBUTTONUP" value="517" />
|
||||
<WindowMessage text="WM_RBUTTONDBLCLK" value="518" />
|
||||
<WindowMessage text="WM_MBUTTONDOWN" value="519" />
|
||||
<WindowMessage text="WM_MBUTTONUP" value="520" />
|
||||
<WindowMessage text="WM_MBUTTONDBLCLK" value="521" />
|
||||
<WindowMessage text="WM_MOUSEWHEEL" value="522" />
|
||||
<WindowMessage text="WM_MOUSEFIRST" value="512" />
|
||||
<WindowMessage text="WM_XBUTTONDOWN" value="523" />
|
||||
<WindowMessage text="WM_XBUTTONUP" value="524" />
|
||||
<WindowMessage text="WM_XBUTTONDBLCLK" value="525" />
|
||||
<WindowMessage text="WM_MOUSELAST" value="525" />
|
||||
<WindowMessage text="WM_MOUSEHOVER" value="0x2A1" />
|
||||
<WindowMessage text="WM_MOUSELEAVE" value="0x2A3" />
|
||||
<WindowMessage text="WM_THEMECHANGED" value="794" />
|
||||
<WindowMessage text="BM_CLICK" value="245" />
|
||||
<WindowMessage text="BM_GETCHECK" value="240" />
|
||||
<WindowMessage text="BM_GETIMAGE" value="246" />
|
||||
<WindowMessage text="BM_GETSTATE" value="242" />
|
||||
<WindowMessage text="BM_SETCHECK" value="241" />
|
||||
<WindowMessage text="BM_SETIMAGE" value="247" />
|
||||
<WindowMessage text="BM_SETSTATE" value="243" />
|
||||
<WindowMessage text="BM_SETSTYLE" value="244" />
|
||||
<WindowMessage text="CB_ADDSTRING" value="323" />
|
||||
<WindowMessage text="CB_DELETESTRING" value="324" />
|
||||
<WindowMessage text="CB_DIR" value="325" />
|
||||
<WindowMessage text="CB_FINDSTRING" value="332" />
|
||||
<WindowMessage text="CB_FINDSTRINGEXACT" value="344" />
|
||||
<WindowMessage text="CB_GETCOMBOBOXINFO" value="356" />
|
||||
<WindowMessage text="CB_GETCOUNT" value="326" />
|
||||
<WindowMessage text="CB_GETCURSEL" value="327" />
|
||||
<WindowMessage text="CB_GETDROPPEDCONTROLRECT" value="338" />
|
||||
<WindowMessage text="CB_GETDROPPEDSTATE" value="343" />
|
||||
<WindowMessage text="CB_GETDROPPEDWIDTH" value="351" />
|
||||
<WindowMessage text="CB_GETEDITSEL" value="320" />
|
||||
<WindowMessage text="CB_GETEXTENDEDUI" value="342" />
|
||||
<WindowMessage text="CB_GETHORIZONTALEXTENT" value="349" />
|
||||
<WindowMessage text="CB_GETITEMDATA" value="336" />
|
||||
<WindowMessage text="CB_GETITEMHEIGHT" value="340" />
|
||||
<WindowMessage text="CB_GETLBTEXT" value="328" />
|
||||
<WindowMessage text="CB_GETLBTEXTLEN" value="329" />
|
||||
<WindowMessage text="CB_GETLOCALE" value="346" />
|
||||
<WindowMessage text="CB_GETTOPINDEX" value="347" />
|
||||
<WindowMessage text="CB_INITSTORAGE" value="353" />
|
||||
<WindowMessage text="CB_INSERTSTRING" value="330" />
|
||||
<WindowMessage text="CB_LIMITTEXT" value="321" />
|
||||
<WindowMessage text="CB_RESETCONTENT" value="331" />
|
||||
<WindowMessage text="CB_SELECTSTRING" value="333" />
|
||||
<WindowMessage text="CB_SETCURSEL" value="334" />
|
||||
<WindowMessage text="CB_SETDROPPEDWIDTH" value="352" />
|
||||
<WindowMessage text="CB_SETEDITSEL" value="322" />
|
||||
<WindowMessage text="CB_SETEXTENDEDUI" value="341" />
|
||||
<WindowMessage text="CB_SETHORIZONTALEXTENT" value="350" />
|
||||
<WindowMessage text="CB_SETITEMDATA" value="337" />
|
||||
<WindowMessage text="CB_SETITEMHEIGHT" value="339" />
|
||||
<WindowMessage text="CB_SETLOCALE" value="345" />
|
||||
<WindowMessage text="CB_SETTOPINDEX" value="348" />
|
||||
<WindowMessage text="CB_SHOWDROPDOWN" value="335" />
|
||||
<WindowMessage text="EM_CANUNDO" value="198" />
|
||||
<WindowMessage text="EM_CHARFROMPOS" value="215" />
|
||||
<WindowMessage text="EM_EMPTYUNDOBUFFER" value="205" />
|
||||
<WindowMessage text="EM_FMTLINES" value="200" />
|
||||
<WindowMessage text="EM_GETFIRSTVISIBLELINE" value="206" />
|
||||
<WindowMessage text="EM_GETHANDLE" value="189" />
|
||||
<WindowMessage text="EM_GETLIMITTEXT" value="213" />
|
||||
<WindowMessage text="EM_GETLINE" value="196" />
|
||||
<WindowMessage text="EM_GETLINECOUNT" value="186" />
|
||||
<WindowMessage text="EM_GETMARGINS" value="212" />
|
||||
<WindowMessage text="EM_GETMODIFY" value="184" />
|
||||
<WindowMessage text="EM_GETPASSWORDCHAR" value="210" />
|
||||
<WindowMessage text="EM_GETRECT" value="178" />
|
||||
<WindowMessage text="EM_GETSEL" value="176" />
|
||||
<WindowMessage text="EM_GETTHUMB" value="190" />
|
||||
<WindowMessage text="EM_GETWORDBREAKPROC" value="209" />
|
||||
<WindowMessage text="EM_LIMITTEXT" value="197" />
|
||||
<WindowMessage text="EM_LINEFROMCHAR" value="201" />
|
||||
<WindowMessage text="EM_LINEINDEX" value="187" />
|
||||
<WindowMessage text="EM_LINELENGTH" value="193" />
|
||||
<WindowMessage text="EM_LINESCROLL" value="182" />
|
||||
<WindowMessage text="EM_POSFROMCHAR" value="214" />
|
||||
<WindowMessage text="EM_REPLACESEL" value="194" />
|
||||
<WindowMessage text="EM_SCROLL" value="181" />
|
||||
<WindowMessage text="EM_SCROLLCARET" value="183" />
|
||||
<WindowMessage text="EM_SETHANDLE" value="188" />
|
||||
<WindowMessage text="EM_SETLIMITTEXT" value="197" />
|
||||
<WindowMessage text="EM_SETMARGINS" value="211" />
|
||||
<WindowMessage text="EM_SETMODIFY" value="185" />
|
||||
<WindowMessage text="EM_SETPASSWORDCHAR" value="204" />
|
||||
<WindowMessage text="EM_SETREADONLY" value="207" />
|
||||
<WindowMessage text="EM_SETRECT" value="179" />
|
||||
<WindowMessage text="EM_SETRECTNP" value="180" />
|
||||
<WindowMessage text="EM_SETSEL" value="177" />
|
||||
<WindowMessage text="EM_SETTABSTOPS" value="203" />
|
||||
<WindowMessage text="EM_SETWORDBREAKPROC" value="208" />
|
||||
<WindowMessage text="EM_UNDO" value="199" />
|
||||
<WindowMessage text="LB_ADDFILE" value="406" />
|
||||
<WindowMessage text="LB_ADDSTRING" value="384" />
|
||||
<WindowMessage text="LB_DELETESTRING" value="386" />
|
||||
<WindowMessage text="LB_DIR" value="397" />
|
||||
<WindowMessage text="LB_FINDSTRING" value="399" />
|
||||
<WindowMessage text="LB_FINDSTRINGEXACT" value="418" />
|
||||
<WindowMessage text="LB_GETANCHORINDEX" value="413" />
|
||||
<WindowMessage text="LB_GETCARETINDEX" value="415" />
|
||||
<WindowMessage text="LB_GETCOUNT" value="395" />
|
||||
<WindowMessage text="LB_GETCURSEL" value="392" />
|
||||
<WindowMessage text="LB_GETHORIZONTALEXTENT" value="403" />
|
||||
<WindowMessage text="LB_GETITEMDATA" value="409" />
|
||||
<WindowMessage text="LB_GETITEMHEIGHT" value="417" />
|
||||
<WindowMessage text="LB_GETITEMRECT" value="408" />
|
||||
<WindowMessage text="LB_GETLOCALE" value="422" />
|
||||
<WindowMessage text="LB_GETSEL" value="391" />
|
||||
<WindowMessage text="LB_GETSELCOUNT" value="400" />
|
||||
<WindowMessage text="LB_GETSELITEMS" value="401" />
|
||||
<WindowMessage text="LB_GETTEXT" value="393" />
|
||||
<WindowMessage text="LB_GETTEXTLEN" value="394" />
|
||||
<WindowMessage text="LB_GETTOPINDEX" value="398" />
|
||||
<WindowMessage text="LB_INITSTORAGE" value="424" />
|
||||
<WindowMessage text="LB_INSERTSTRING" value="385" />
|
||||
<WindowMessage text="LB_ITEMFROMPOINT" value="425" />
|
||||
<WindowMessage text="LB_RESETCONTENT" value="388" />
|
||||
<WindowMessage text="LB_SELECTSTRING" value="396" />
|
||||
<WindowMessage text="LB_SELITEMRANGE" value="411" />
|
||||
<WindowMessage text="LB_SELITEMRANGEEX" value="387" />
|
||||
<WindowMessage text="LB_SETANCHORINDEX" value="412" />
|
||||
<WindowMessage text="LB_SETCARETINDEX" value="414" />
|
||||
<WindowMessage text="LB_SETCOLUMNWIDTH" value="405" />
|
||||
<WindowMessage text="LB_SETCOUNT" value="423" />
|
||||
<WindowMessage text="LB_SETCURSEL" value="390" />
|
||||
<WindowMessage text="LB_SETHORIZONTALEXTENT" value="404" />
|
||||
<WindowMessage text="LB_SETITEMDATA" value="410" />
|
||||
<WindowMessage text="LB_SETITEMHEIGHT" value="416" />
|
||||
<WindowMessage text="LB_SETLOCALE" value="421" />
|
||||
<WindowMessage text="LB_SETSEL" value="389" />
|
||||
<WindowMessage text="LB_SETTABSTOPS" value="402" />
|
||||
<WindowMessage text="LB_SETTOPINDEX" value="407" />
|
||||
</WindowMessageList>
|
@@ -10,8 +10,6 @@
|
||||
<add key="NtstatusXml" value="C:\IRC\TechBot\ntstatus.xml" />
|
||||
<add key="WinerrorXml" value="C:\IRC\TechBot\winerror.xml" />
|
||||
<add key="HresultXml" value="C:\IRC\TechBot\hresult.xml" />
|
||||
<add key="WmXml" value="C:\IRC\TechBot\wm.xml" />
|
||||
<add key="SvnCommand" value="svn co svn://svn.reactos.com/trunk/reactos" />
|
||||
<add key="BugUrl" value="www.reactos.org/bugzilla/show_bug.cgi?id={0}" />
|
||||
</appSettings>
|
||||
</configuration>
|
||||
|
@@ -134,18 +134,6 @@ namespace TechBot.Console
|
||||
}
|
||||
}
|
||||
|
||||
private static string WmXml
|
||||
{
|
||||
get
|
||||
{
|
||||
string optionName = "WmXml";
|
||||
string s = ConfigurationSettings.AppSettings[optionName];
|
||||
VerifyRequiredOption(optionName,
|
||||
s);
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
private static string SvnCommand
|
||||
{
|
||||
get
|
||||
@@ -158,18 +146,6 @@ namespace TechBot.Console
|
||||
}
|
||||
}
|
||||
|
||||
private static string BugUrl
|
||||
{
|
||||
get
|
||||
{
|
||||
string optionName = "BugUrl";
|
||||
string s = ConfigurationSettings.AppSettings[optionName];
|
||||
VerifyRequiredOption(optionName,
|
||||
s);
|
||||
return s;
|
||||
}
|
||||
}
|
||||
|
||||
private static void RunIrcService()
|
||||
{
|
||||
IrcService ircService = new IrcService(IRCServerHostName,
|
||||
@@ -181,9 +157,7 @@ namespace TechBot.Console
|
||||
NtstatusXml,
|
||||
WinerrorXml,
|
||||
HresultXml,
|
||||
WmXml,
|
||||
SvnCommand,
|
||||
BugUrl);
|
||||
SvnCommand);
|
||||
ircService.Run();
|
||||
}
|
||||
|
||||
@@ -202,9 +176,7 @@ namespace TechBot.Console
|
||||
NtstatusXml,
|
||||
WinerrorXml,
|
||||
HresultXml,
|
||||
WmXml,
|
||||
SvnCommand,
|
||||
BugUrl);
|
||||
SvnCommand);
|
||||
service.Run();
|
||||
while (true)
|
||||
{
|
||||
|
@@ -1,54 +0,0 @@
|
||||
using System;
|
||||
|
||||
namespace TechBot.Library
|
||||
{
|
||||
public class BugCommand : BaseCommand, ICommand
|
||||
{
|
||||
private IServiceOutput serviceOutput;
|
||||
private string bugUrl;
|
||||
|
||||
public BugCommand(IServiceOutput serviceOutput,
|
||||
string bugUrl)
|
||||
{
|
||||
this.serviceOutput = serviceOutput;
|
||||
this.bugUrl = bugUrl;
|
||||
}
|
||||
|
||||
public bool CanHandle(string commandName)
|
||||
{
|
||||
return CanHandle(commandName,
|
||||
new string[] { "bug" });
|
||||
}
|
||||
|
||||
public void Handle(MessageContext context,
|
||||
string commandName,
|
||||
string parameters)
|
||||
{
|
||||
string bugText = parameters;
|
||||
if (bugText.Equals(String.Empty))
|
||||
{
|
||||
serviceOutput.WriteLine(context,
|
||||
"Please provide a valid bug number.");
|
||||
return;
|
||||
}
|
||||
|
||||
NumberParser np = new NumberParser();
|
||||
long bug = np.Parse(bugText);
|
||||
if (np.Error)
|
||||
{
|
||||
serviceOutput.WriteLine(context,
|
||||
String.Format("{0} is not a valid bug number.",
|
||||
bugText));
|
||||
return;
|
||||
}
|
||||
|
||||
serviceOutput.WriteLine(context,
|
||||
String.Format(bugUrl, bug));
|
||||
}
|
||||
|
||||
public string Help()
|
||||
{
|
||||
return "!bug <number>";
|
||||
}
|
||||
}
|
||||
}
|
@@ -16,9 +16,7 @@ namespace TechBot.Library
|
||||
private string ntstatusXml;
|
||||
private string winerrorXml;
|
||||
private string hresultXml;
|
||||
private string wmXml;
|
||||
private string svnCommand;
|
||||
private string bugUrl;
|
||||
private IrcClient client;
|
||||
private ArrayList channels = new ArrayList(); /* IrcChannel */
|
||||
private TechBotService service;
|
||||
@@ -33,22 +31,18 @@ namespace TechBot.Library
|
||||
string ntstatusXml,
|
||||
string winerrorXml,
|
||||
string hresultXml,
|
||||
string wmXml,
|
||||
string svnCommand,
|
||||
string bugUrl)
|
||||
string svnCommand)
|
||||
{
|
||||
this.hostname = hostname;
|
||||
this.port = port;
|
||||
this.channelnames = channelnames;
|
||||
this.botname = botname;
|
||||
this.chmPath = chmPath;
|
||||
this.mainChm = mainChm;
|
||||
this.ntstatusXml = ntstatusXml;
|
||||
this.winerrorXml = winerrorXml;
|
||||
this.hresultXml = hresultXml;
|
||||
this.wmXml = wmXml;
|
||||
this.svnCommand = svnCommand;
|
||||
this.bugUrl = bugUrl;
|
||||
this.botname = botname;
|
||||
this.chmPath = chmPath;
|
||||
this.mainChm = mainChm;
|
||||
this.ntstatusXml = ntstatusXml;
|
||||
this.winerrorXml = winerrorXml;
|
||||
this.hresultXml = hresultXml;
|
||||
this.svnCommand = svnCommand;
|
||||
}
|
||||
|
||||
public void Run()
|
||||
@@ -59,9 +53,7 @@ namespace TechBot.Library
|
||||
ntstatusXml,
|
||||
winerrorXml,
|
||||
hresultXml,
|
||||
wmXml,
|
||||
svnCommand,
|
||||
bugUrl);
|
||||
svnCommand);
|
||||
service.Run();
|
||||
|
||||
client = new IrcClient();
|
||||
|
@@ -13,9 +13,6 @@
|
||||
<File name=".\HresultCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" />
|
||||
<File name=".\WinerrorCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" />
|
||||
<File name=".\SvnCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" />
|
||||
<File name=".\BugCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" />
|
||||
<File name=".\WmCommand.cs" subtype="Code" buildaction="Compile" dependson="" data="" />
|
||||
<File name=".\MessageContext.cs" subtype="Code" buildaction="Compile" dependson="" data="" />
|
||||
</Contents>
|
||||
<References>
|
||||
<Reference type="Project" refto="CHMLibrary" localcopy="True" />
|
||||
|
@@ -15,20 +15,16 @@ namespace TechBot.Library
|
||||
private string ntstatusXml;
|
||||
private string winerrorXml;
|
||||
private string hresultXml;
|
||||
private string wmXml;
|
||||
private string svnCommand;
|
||||
private string bugUrl;
|
||||
private ArrayList commands = new ArrayList();
|
||||
|
||||
public TechBotService(IServiceOutput serviceOutput,
|
||||
string chmPath,
|
||||
string mainChm,
|
||||
string ntstatusXml,
|
||||
string winerrorXml,
|
||||
string hresultXml,
|
||||
string wmXml,
|
||||
string svnCommand,
|
||||
string bugUrl)
|
||||
string mainChm,
|
||||
string ntstatusXml,
|
||||
string winerrorXml,
|
||||
string hresultXml,
|
||||
string svnCommand)
|
||||
{
|
||||
this.serviceOutput = serviceOutput;
|
||||
this.chmPath = chmPath;
|
||||
@@ -36,9 +32,7 @@ namespace TechBot.Library
|
||||
this.ntstatusXml = ntstatusXml;
|
||||
this.winerrorXml = winerrorXml;
|
||||
this.hresultXml = hresultXml;
|
||||
this.wmXml = wmXml;
|
||||
this.svnCommand = svnCommand;
|
||||
this.bugUrl = bugUrl;
|
||||
}
|
||||
|
||||
public void Run()
|
||||
@@ -54,12 +48,8 @@ namespace TechBot.Library
|
||||
winerrorXml));
|
||||
commands.Add(new HresultCommand(serviceOutput,
|
||||
hresultXml));
|
||||
commands.Add(new WmCommand(serviceOutput,
|
||||
wmXml));
|
||||
commands.Add(new SvnCommand(serviceOutput,
|
||||
svnCommand));
|
||||
commands.Add(new BugCommand(serviceOutput,
|
||||
bugUrl));
|
||||
}
|
||||
|
||||
public void InjectMessage(MessageContext context,
|
||||
|
@@ -1,104 +0,0 @@
|
||||
using System;
|
||||
using System.Xml;
|
||||
|
||||
namespace TechBot.Library
|
||||
{
|
||||
public class WmCommand : BaseCommand, ICommand
|
||||
{
|
||||
private IServiceOutput serviceOutput;
|
||||
private string wmXml;
|
||||
private XmlDocument wmXmlDocument;
|
||||
|
||||
public WmCommand(IServiceOutput serviceOutput,
|
||||
string wmXml)
|
||||
{
|
||||
this.serviceOutput = serviceOutput;
|
||||
this.wmXml = wmXml;
|
||||
wmXmlDocument = new XmlDocument();
|
||||
wmXmlDocument.Load(wmXml);
|
||||
}
|
||||
|
||||
public bool CanHandle(string commandName)
|
||||
{
|
||||
return CanHandle(commandName,
|
||||
new string[] { "wm" });
|
||||
}
|
||||
|
||||
public void Handle(MessageContext context,
|
||||
string commandName,
|
||||
string parameters)
|
||||
{
|
||||
string wmText = parameters;
|
||||
if (wmText.Equals(String.Empty))
|
||||
{
|
||||
serviceOutput.WriteLine(context,
|
||||
"Please provide a valid window message value or name.");
|
||||
return;
|
||||
}
|
||||
|
||||
NumberParser np = new NumberParser();
|
||||
long wm = np.Parse(wmText);
|
||||
string output;
|
||||
if (np.Error)
|
||||
{
|
||||
// Assume "!wm <name>" form.
|
||||
output = GetWmNumber(wmText);
|
||||
}
|
||||
else
|
||||
{
|
||||
output = GetWmDescription(wm);
|
||||
}
|
||||
|
||||
if (output != null)
|
||||
{
|
||||
serviceOutput.WriteLine(context,
|
||||
String.Format("{0} is {1}.",
|
||||
wmText,
|
||||
output));
|
||||
}
|
||||
else
|
||||
{
|
||||
serviceOutput.WriteLine(context,
|
||||
String.Format("I don't know about window message {0}.",
|
||||
wmText));
|
||||
}
|
||||
}
|
||||
|
||||
public string Help()
|
||||
{
|
||||
return "!wm <value> or !wm <name>";
|
||||
}
|
||||
|
||||
private string GetWmDescription(long wm)
|
||||
{
|
||||
XmlElement root = wmXmlDocument.DocumentElement;
|
||||
XmlNode node = root.SelectSingleNode(String.Format("WindowMessage[@value='{0}']",
|
||||
wm));
|
||||
if (node != null)
|
||||
{
|
||||
XmlAttribute text = node.Attributes["text"];
|
||||
if (text == null)
|
||||
throw new Exception("Node has no text attribute.");
|
||||
return text.Value;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
private string GetWmNumber(string wmName)
|
||||
{
|
||||
XmlElement root = wmXmlDocument.DocumentElement;
|
||||
XmlNode node = root.SelectSingleNode(String.Format("WindowMessage[@text='{0}']",
|
||||
wmName));
|
||||
if (node != null)
|
||||
{
|
||||
XmlAttribute value = node.Attributes["value"];
|
||||
if (value == null)
|
||||
throw new Exception("Node has no value attribute.");
|
||||
return value.Value;
|
||||
}
|
||||
else
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
@@ -10,8 +10,6 @@
|
||||
<add key="NtstatusXml" value="C:\IRC\TechBot\ntstatus.xml" />
|
||||
<add key="WinerrorXml" value="C:\IRC\TechBot\winerror.xml" />
|
||||
<add key="HresultXml" value="C:\IRC\TechBot\hresult.xml" />
|
||||
<add key="WmXml" value="C:\IRC\TechBot\wm.xml" />
|
||||
<add key="SvnCommand" value="svn co svn://svn.reactos.org/trunk/reactos" />
|
||||
<add key="BugUrl" value="www.reactos.org/bugzilla/show_bug.cgi?id={0}" />
|
||||
<add key="SvnCommand" value="svn co svn://svn.reactos.com/trunk/reactos" />
|
||||
</appSettings>
|
||||
</configuration>
|
||||
|
@@ -15,10 +15,8 @@ namespace TechBot
|
||||
private string MainChm;
|
||||
private string NtstatusXml;
|
||||
private string HresultXml;
|
||||
private string WmXml;
|
||||
private string WinerrorXml;
|
||||
private string SvnCommand;
|
||||
private string BugUrl;
|
||||
private EventLog eventLog;
|
||||
|
||||
public ServiceThread(EventLog eventLog)
|
||||
@@ -36,10 +34,8 @@ namespace TechBot
|
||||
MainChm = ConfigurationSettings.AppSettings["MainChm"];
|
||||
NtstatusXml = ConfigurationSettings.AppSettings["NtstatusXml"];
|
||||
HresultXml = ConfigurationSettings.AppSettings["HresultXml"];
|
||||
WmXml = ConfigurationSettings.AppSettings["WmXml"];
|
||||
WinerrorXml = ConfigurationSettings.AppSettings["WinerrorXml"];
|
||||
SvnCommand = ConfigurationSettings.AppSettings["SvnCommand"];
|
||||
BugUrl = ConfigurationSettings.AppSettings["BugUrl"];
|
||||
}
|
||||
|
||||
public void Run()
|
||||
@@ -56,9 +52,7 @@ namespace TechBot
|
||||
NtstatusXml,
|
||||
WinerrorXml,
|
||||
HresultXml,
|
||||
WmXml,
|
||||
SvnCommand,
|
||||
BugUrl);
|
||||
SvnCommand);
|
||||
ircService.Run();
|
||||
}
|
||||
|
||||
|
3
os2/apps/bepslep/.cvsignore
Normal file
3
os2/apps/bepslep/.cvsignore
Normal file
@@ -0,0 +1,3 @@
|
||||
*.exe
|
||||
*.o
|
||||
*.sym
|
@@ -1,5 +0,0 @@
|
||||
<group>
|
||||
<directory name="bepslep">
|
||||
<xi:include href="bepslep/bepslep.xml" />
|
||||
</directory>
|
||||
</group>
|
340
os2/copying
340
os2/copying
@@ -1,340 +0,0 @@
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
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 2 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, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
@@ -1,11 +0,0 @@
|
||||
<group>
|
||||
<directory name="apps">
|
||||
<xi:include href="apps/directory.xml" />
|
||||
</directory>
|
||||
<directory name="lib">
|
||||
<xi:include href="lib/directory.xml" />
|
||||
</directory>
|
||||
<directory name="server">
|
||||
<xi:include href="server/os2srv.xml" />
|
||||
</directory>
|
||||
</group>
|
@@ -1,5 +0,0 @@
|
||||
<group>
|
||||
<directory name="doscalls">
|
||||
<xi:include href="doscalls/doscalls.xml" />
|
||||
</directory>
|
||||
</group>
|
5
os2/lib/doscalls/.cvsignore
Normal file
5
os2/lib/doscalls/.cvsignore
Normal file
@@ -0,0 +1,5 @@
|
||||
*.exe
|
||||
*.o
|
||||
*.sym
|
||||
*.dll
|
||||
*.coff
|
1
os2/lib/doscalls/devices/.cvsignore
Normal file
1
os2/lib/doscalls/devices/.cvsignore
Normal file
@@ -0,0 +1 @@
|
||||
*.o
|
@@ -1,4 +1,4 @@
|
||||
/* $Id$
|
||||
/* $Id: devices.cpp,v 1.5 2004/01/31 01:29:11 robertk Exp $
|
||||
*/
|
||||
/*
|
||||
*
|
||||
|
@@ -1,4 +1,38 @@
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS-OS/2 subsystem base services\0"
|
||||
#define REACTOS_STR_INTERNAL_NAME "doscalls\0"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "doscalls.dll\0"
|
||||
#include <reactos/version.rc>
|
||||
#include <defines.h>
|
||||
#include <reactos/resource.h>
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
VS_VERSION_INFO VERSIONINFO
|
||||
FILEVERSION RES_UINT_FV_MAJOR,RES_UINT_FV_MINOR,RES_UINT_FV_REVISION,RES_UINT_FV_BUILD
|
||||
PRODUCTVERSION RES_UINT_PV_MAJOR,RES_UINT_PV_MINOR,RES_UINT_PV_REVISION,RES_UINT_PV_BUILD
|
||||
FILEFLAGSMASK 0x3fL
|
||||
#ifdef _DEBUG
|
||||
FILEFLAGS 0x1L
|
||||
#else
|
||||
FILEFLAGS 0x0L
|
||||
#endif
|
||||
FILEOS 0x40004L
|
||||
FILETYPE 0x2L
|
||||
FILESUBTYPE 0x0L
|
||||
BEGIN
|
||||
BLOCK "StringFileInfo"
|
||||
BEGIN
|
||||
BLOCK "040904b0"
|
||||
BEGIN
|
||||
VALUE "CompanyName", RES_STR_COMPANY_NAME
|
||||
VALUE "FileDescription", "OS2 subsystem base services\0"
|
||||
VALUE "FileVersion", RES_STR_FILE_VERSION
|
||||
VALUE "InternalName", "doscalls\0"
|
||||
VALUE "LegalCopyright", RES_STR_LEGAL_COPYRIGHT
|
||||
VALUE "OriginalFilename", "doscalls.dll\0"
|
||||
VALUE "ProductName", RES_STR_PRODUCT_NAME
|
||||
VALUE "ProductVersion", RES_STR_PRODUCT_VERSION
|
||||
END
|
||||
END
|
||||
BLOCK "VarFileInfo"
|
||||
BEGIN
|
||||
VALUE "Translation", 0x409, 1200
|
||||
END
|
||||
END
|
||||
|
||||
|
@@ -1,23 +0,0 @@
|
||||
<module name="doscalls" type="nativedll">
|
||||
<importlibrary definition="doscalls.def" />
|
||||
<include base="doscalls">../../include</include>
|
||||
<linkerflag>-lgcc</linkerflag>
|
||||
<directory name="devices">
|
||||
<file>devices.cpp</file>
|
||||
<file>ioctl_async.cpp</file>
|
||||
</directory>
|
||||
<directory name="file">
|
||||
<file>directory.cpp</file>
|
||||
<file>openclose.cpp</file>
|
||||
</directory>
|
||||
<directory name="memory">
|
||||
<file>memory.cpp</file>
|
||||
</directory>
|
||||
<directory name="misc">
|
||||
<file>doscalls.cpp</file>
|
||||
<file>error.cpp</file>
|
||||
</directory>
|
||||
<directory name="run">
|
||||
<file>process.cpp</file>
|
||||
</directory>
|
||||
</module>
|
1
os2/lib/doscalls/file/.cvsignore
Normal file
1
os2/lib/doscalls/file/.cvsignore
Normal file
@@ -0,0 +1 @@
|
||||
*.o
|
@@ -1,4 +1,4 @@
|
||||
/* $Id$
|
||||
/* $Id: directory.cpp,v 1.1 2002/09/04 22:19:47 robertk Exp $
|
||||
*/
|
||||
/*
|
||||
*
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* $Id$
|
||||
/* $Id: openclose.cpp,v 1.5 2004/01/31 01:29:11 robertk Exp $
|
||||
*/
|
||||
/*
|
||||
*
|
||||
|
1
os2/lib/doscalls/misc/.cvsignore
Normal file
1
os2/lib/doscalls/misc/.cvsignore
Normal file
@@ -0,0 +1 @@
|
||||
*.o
|
@@ -1,4 +1,4 @@
|
||||
/* $Id$
|
||||
/* $Id: doscalls.cpp,v 1.1 2002/07/26 00:23:13 robertk Exp $
|
||||
*/
|
||||
/*
|
||||
*
|
||||
|
@@ -1,4 +1,4 @@
|
||||
/* $Id$
|
||||
/* $Id: error.cpp,v 1.3 2003/01/07 16:23:11 robd Exp $
|
||||
*/
|
||||
/*
|
||||
*
|
||||
|
1
os2/lib/doscalls/run/.cvsignore
Normal file
1
os2/lib/doscalls/run/.cvsignore
Normal file
@@ -0,0 +1 @@
|
||||
*.o
|
@@ -1,4 +1,4 @@
|
||||
/* $Id$
|
||||
/* $Id: process.cpp,v 1.6 2003/01/07 16:23:11 robd Exp $
|
||||
*/
|
||||
/*
|
||||
*
|
||||
@@ -31,7 +31,7 @@ APIRET STDCALL DosSleep(ULONG msec)
|
||||
}
|
||||
|
||||
|
||||
/* $Id$ */
|
||||
/* $Id: process.cpp,v 1.6 2003/01/07 16:23:11 robd Exp $ */
|
||||
/* Terminates the current thread or the current Process.
|
||||
Decission is made by action
|
||||
FIXME: move this code to OS2.EXE */
|
||||
|
14
os2/makefile
14
os2/makefile
@@ -1,14 +0,0 @@
|
||||
all:
|
||||
@echo To build "os2" there are two paths:
|
||||
@echo ---
|
||||
@echo 1. copy the os2 folder into the reactos\modules folder
|
||||
@echo 2. link reactos/modules/os2 to os2
|
||||
@echo UNIX
|
||||
@echo cd $${ROS_SRC_ROOT}/reactos/modules
|
||||
@echo ln -s $${ROS_SRC_ROOT}/os2 os2
|
||||
@echo WINDOWS
|
||||
@echo cd %%ROS_SRC_ROOT%%\reactos\modules
|
||||
@echo junction os2 %%ROS_SRC_ROOT%%\os2
|
||||
@echo ---
|
||||
@echo Eventually you can run "make depends" in the %%ROS_SRC_ROOT%%\reactos
|
||||
@echo directory to compile it.
|
3
os2/server/.cvsignore
Normal file
3
os2/server/.cvsignore
Normal file
@@ -0,0 +1,3 @@
|
||||
*.exe
|
||||
*.o
|
||||
*.sym
|
@@ -1,50 +0,0 @@
|
||||
/* $Id$
|
||||
*
|
||||
* dllmain.c - OS/2 Enviroment Subsystem Server
|
||||
*
|
||||
* ReactOS Operating System
|
||||
*
|
||||
* --------------------------------------------------------------------
|
||||
*
|
||||
* This software 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 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This software 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 software; see the file COPYING.LIB. If not, write
|
||||
* to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
|
||||
* MA 02139, USA.
|
||||
*
|
||||
* --------------------------------------------------------------------
|
||||
*/
|
||||
#include "os2srv.h"
|
||||
|
||||
#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
/* DLL entry point */
|
||||
|
||||
HANDLE Os2SrvDllHandle = 0;
|
||||
|
||||
/* FUNCTIONS *****************************************************************/
|
||||
|
||||
BOOL STDCALL
|
||||
DllMain(HANDLE hDll,
|
||||
DWORD dwReason,
|
||||
LPVOID lpReserved)
|
||||
{
|
||||
if (DLL_PROCESS_ATTACH == dwReason)
|
||||
{
|
||||
Os2SrvDllHandle = hDll;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* EOF */
|
34
os2/server/makefile
Normal file
34
os2/server/makefile
Normal file
@@ -0,0 +1,34 @@
|
||||
# $Id: makefile,v 1.3 2003/01/12 02:03:06 robd Exp $
|
||||
|
||||
PATH_TO_TOP = ../../reactos
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_APPTYPE = native
|
||||
|
||||
TARGET_NAME = os2ss
|
||||
|
||||
TARGET_INSTALLDIR = system32
|
||||
|
||||
TARGET_CFLAGS = -D__NTAPP__
|
||||
|
||||
TARGET_SDKLIBS = ntdll.a kernel32.a csrss.a
|
||||
|
||||
TARGET_GCCLIBS = stdc++
|
||||
|
||||
OBJECTS_API =
|
||||
|
||||
OBJECTS_MISC = \
|
||||
$(TARGET_NAME).o
|
||||
|
||||
TARGET_OBJECTS = \
|
||||
$(OBJECTS_API) \
|
||||
$(OBJECTS_MISC)
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
@@ -1,3 +0,0 @@
|
||||
LIBRARY os2srv.dll
|
||||
EXPORTS
|
||||
ServerDllInitialization@8
|
@@ -1,13 +0,0 @@
|
||||
#ifndef _OS2SS_H_INCLUDED_
|
||||
#define _OS2SS_H_INCLUDED_
|
||||
|
||||
/* PSDK/NDK Headers */
|
||||
#include <stdio.h>
|
||||
#include <windows.h>
|
||||
|
||||
#define NTOS_MODE_USER
|
||||
#include <ndk/ntndk.h>
|
||||
|
||||
#include <csr/server.h>
|
||||
|
||||
#endif /* ndef _OS2SS_H_INCLUDED_ */
|
@@ -1,4 +0,0 @@
|
||||
#define REACTOS_STR_FILE_DESCRIPTION "ReactOS-OS/2 Environment Subsystem Server\0"
|
||||
#define REACTOS_STR_INTERNAL_NAME "os2srv\0"
|
||||
#define REACTOS_STR_ORIGINAL_FILENAME "os2srv.dll\0"
|
||||
#include <reactos/version.rc>
|
@@ -1,11 +0,0 @@
|
||||
<module name="os2srv" type="nativedll">
|
||||
<importlibrary definition="os2srv.def" />
|
||||
<include base="os2srv">.</include>
|
||||
<define name="__USE_W32API" />
|
||||
<define name="_DISABLE_TIDENTS" />
|
||||
<library>ntdll</library>
|
||||
<library>csrsrv</library>
|
||||
<file>dllmain.c</file>
|
||||
<file>server.c</file>
|
||||
<file>os2srv.rc</file>
|
||||
</module>
|
157
os2/server/os2ss.cpp
Normal file
157
os2/server/os2ss.cpp
Normal file
@@ -0,0 +1,157 @@
|
||||
/* $Id: os2ss.cpp,v 1.2 2003/01/07 16:23:12 robd Exp $
|
||||
*
|
||||
* reactos/subsys/csrss/api/process.c
|
||||
*
|
||||
* "\windows\ApiPort" port process management functions
|
||||
*
|
||||
* ReactOS Operating System
|
||||
*/
|
||||
// TODO: Rewrite the whole file. This is just a copy
|
||||
|
||||
#include <ddk/ntddk.h>
|
||||
#include <ntdll/rtl.h>
|
||||
#include <ntos/synch.h>
|
||||
|
||||
extern "C" {
|
||||
BOOL CsrServerInitialization(ULONG ArgumentCount, PWSTR *ArgumentArray);
|
||||
VOID DisplayString(LPCWSTR lpwString);
|
||||
//BOOL STDCALL CsrServerInitialization (ULONG ArgumentCount, PWSTR *ArgumentArray);
|
||||
//VOID STDCALL DisplayString(LPCWSTR lpwString);
|
||||
//VOID STDCALL PrintString (char* fmt, ...);
|
||||
//NTSTATUS STDCALL NtDisplayString(IN PUNICODE_STRING DisplayString);
|
||||
|
||||
void
|
||||
DisplayString(LPCWSTR lpwString)
|
||||
{
|
||||
UNICODE_STRING us;
|
||||
|
||||
RtlInitUnicodeString(&us, lpwString);
|
||||
NtDisplayString(&us);
|
||||
}
|
||||
|
||||
/*
|
||||
void
|
||||
PrintString(char* fmt,...)
|
||||
{
|
||||
char buffer[512];
|
||||
va_list ap;
|
||||
UNICODE_STRING UnicodeString;
|
||||
ANSI_STRING AnsiString;
|
||||
|
||||
va_start(ap, fmt);
|
||||
vsprintf(buffer, fmt, ap);
|
||||
va_end(ap);
|
||||
|
||||
RtlInitAnsiString(&AnsiString, buffer);
|
||||
RtlAnsiStringToUnicodeString(&UnicodeString,
|
||||
&AnsiString,
|
||||
TRUE);
|
||||
NtDisplayString(&UnicodeString);
|
||||
RtlFreeUnicodeString(&UnicodeString);
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
/* server variables */
|
||||
|
||||
int NumProcesses;
|
||||
|
||||
|
||||
|
||||
/* Native image's entry point */
|
||||
|
||||
void NtProcessStartup (PPEB Peb)
|
||||
{
|
||||
PRTL_USER_PROCESS_PARAMETERS ProcParams;
|
||||
PWSTR ArgBuffer;
|
||||
PWSTR *argv;
|
||||
ULONG argc = 0;
|
||||
int i = 0;
|
||||
int afterlastspace = 0;
|
||||
OBJECT_ATTRIBUTES ObjectAttributes;
|
||||
HANDLE CsrssInitEvent;
|
||||
UNICODE_STRING UnicodeString;
|
||||
NTSTATUS Status;
|
||||
|
||||
ProcParams = RtlNormalizeProcessParams (Peb->ProcessParameters);
|
||||
|
||||
argv = (PWSTR *)RtlAllocateHeap (Peb->ProcessHeap,
|
||||
0, 512 * sizeof(PWSTR));
|
||||
ArgBuffer = (PWSTR)RtlAllocateHeap (Peb->ProcessHeap,
|
||||
0,
|
||||
ProcParams->CommandLine.Length + sizeof(WCHAR));
|
||||
memcpy (ArgBuffer,
|
||||
ProcParams->CommandLine.Buffer,
|
||||
ProcParams->CommandLine.Length + sizeof(WCHAR));
|
||||
|
||||
while (ArgBuffer[i])
|
||||
{
|
||||
if (ArgBuffer[i] == L' ')
|
||||
{
|
||||
argc++;
|
||||
ArgBuffer[i] = L'\0';
|
||||
argv[argc-1] = &(ArgBuffer[afterlastspace]);
|
||||
i++;
|
||||
while (ArgBuffer[i] == L' ')
|
||||
i++;
|
||||
afterlastspace = i;
|
||||
}
|
||||
else
|
||||
{
|
||||
i++;
|
||||
}
|
||||
}
|
||||
|
||||
if (ArgBuffer[afterlastspace] != L'\0')
|
||||
{
|
||||
argc++;
|
||||
ArgBuffer[i] = L'\0';
|
||||
argv[argc-1] = &(ArgBuffer[afterlastspace]);
|
||||
}
|
||||
|
||||
RtlInitUnicodeString(&UnicodeString,
|
||||
L"\\CsrssInitDone");
|
||||
InitializeObjectAttributes(&ObjectAttributes,
|
||||
&UnicodeString,
|
||||
EVENT_ALL_ACCESS,
|
||||
0,
|
||||
NULL);
|
||||
Status = NtOpenEvent(&CsrssInitEvent,
|
||||
EVENT_ALL_ACCESS,
|
||||
&ObjectAttributes);
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
DbgPrint("CSR: Failed to open csrss notification event\n");
|
||||
}
|
||||
if (CsrServerInitialization (argc, argv) == TRUE)
|
||||
{
|
||||
|
||||
NtSetEvent(CsrssInitEvent,
|
||||
NULL);
|
||||
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0, argv);
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0,
|
||||
ArgBuffer);
|
||||
|
||||
/* terminate the current thread only */
|
||||
NtTerminateThread( NtCurrentThread(), 0 );
|
||||
}
|
||||
else
|
||||
{
|
||||
DisplayString( L"CSR: Subsystem initialization failed.\n" );
|
||||
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0, argv);
|
||||
RtlFreeHeap (Peb->ProcessHeap,
|
||||
0,
|
||||
ArgBuffer);
|
||||
|
||||
/*
|
||||
* Tell SM we failed.
|
||||
*/
|
||||
NtTerminateProcess( NtCurrentProcess(), 0 );
|
||||
}
|
||||
}
|
@@ -1,84 +0,0 @@
|
||||
/* $Id$
|
||||
*
|
||||
* server.c - OS/2 Enviroment Subsystem Server - Initialization
|
||||
*
|
||||
* ReactOS Operating System
|
||||
*
|
||||
* --------------------------------------------------------------------
|
||||
*
|
||||
* This software 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 2 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This software 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 software; see the file COPYING.LIB. If not, write
|
||||
* to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
|
||||
* MA 02139, USA.
|
||||
*
|
||||
* --------------------------------------------------------------------
|
||||
*/
|
||||
#include "os2srv.h"
|
||||
|
||||
//#define NDEBUG
|
||||
#include <debug.h>
|
||||
|
||||
HANDLE Os2ApiPort = NULL;
|
||||
|
||||
/**********************************************************************
|
||||
* NAME PRIVATE
|
||||
* Os2StaticServerThread/1
|
||||
*/
|
||||
VOID STDCALL Os2StaticServerThread (PVOID x)
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
PPORT_MESSAGE Request = (PPORT_MESSAGE) x;
|
||||
PPORT_MESSAGE Reply = NULL;
|
||||
ULONG MessageType = 0;
|
||||
|
||||
DPRINT("VMSSRV: %s called\n", __FUNCTION__);
|
||||
|
||||
MessageType = Request->u2.s2.Type;
|
||||
DPRINT("VMSSRV: %s received a message (Type=%d)\n",
|
||||
__FUNCTION__, MessageType);
|
||||
switch (MessageType)
|
||||
{
|
||||
default:
|
||||
Reply = Request;
|
||||
Status = NtReplyPort (Os2ApiPort, Reply);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/*=====================================================================
|
||||
* PUBLIC API
|
||||
*===================================================================*/
|
||||
|
||||
NTSTATUS STDCALL ServerDllInitialization (ULONG ArgumentCount,
|
||||
LPWSTR *Argument)
|
||||
{
|
||||
NTSTATUS Status = STATUS_SUCCESS;
|
||||
|
||||
DPRINT("VMSSRV: %s called\n", __FUNCTION__);
|
||||
|
||||
// Get the listening port from csrsrv.dll
|
||||
Os2ApiPort = CsrQueryApiPort ();
|
||||
if (NULL == Os2ApiPort)
|
||||
{
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
// Register our message dispatcher
|
||||
Status = CsrAddStaticServerThread (Os2StaticServerThread);
|
||||
if (NT_SUCCESS(Status))
|
||||
{
|
||||
//TODO: perform the real OS/2 server internal initialization here
|
||||
}
|
||||
return Status;
|
||||
}
|
||||
|
||||
/* EOF */
|
168
posix/Makefile
168
posix/Makefile
@@ -1,14 +1,154 @@
|
||||
all:
|
||||
@echo To build "posix" there are two paths:
|
||||
@echo ---
|
||||
@echo 1. copy the posix folder into the reactos\modules folder
|
||||
@echo 2. link reactos/modules/posix to posix
|
||||
@echo UNIX
|
||||
@echo cd $${ROS_SRC_ROOT}/reactos/modules
|
||||
@echo ln -s $${ROS_SRC_ROOT}/posix posix
|
||||
@echo WINDOWS
|
||||
@echo cd %%ROS_SRC_ROOT%%\reactos\modules
|
||||
@echo junction posix %%ROS_SRC_ROOT%%\posix
|
||||
@echo ---
|
||||
@echo Eventually you can run "make depends" in the %%ROS_SRC_ROOT%%\reactos
|
||||
@echo directory to compile it.
|
||||
# $Id: Makefile,v 1.7 2003/01/05 18:29:41 robd Exp $
|
||||
#
|
||||
# ReactOS POSIX+ Personality
|
||||
#
|
||||
|
||||
PATH_TO_TOP = ../reactos
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
|
||||
POSIX_OTHER = server #lib
|
||||
|
||||
POSIX_TOOLS = mksystab
|
||||
|
||||
POSIX_LIBS = psxdll psxx
|
||||
|
||||
POSIX_APPS = baresh posixw32
|
||||
|
||||
POSIX_MODULES = $(POSIX_OTHER) $(POSIX_TOOLS) $(POSIX_LIBS) $(POSIX_APPS)
|
||||
|
||||
all: implib $(POSIX_MODULES)
|
||||
|
||||
implib: $(POSIX_MODULES:%=%_implib)
|
||||
|
||||
clean: $(POSIX_MODULES:%=%_clean)
|
||||
|
||||
install: $(POSIX_MODULES:%=%_install)
|
||||
|
||||
#dist: $(TOOLS_PATH)/rcopy$(EXE_POSTFIX) dist_clean dist_dirs \
|
||||
# $(POSIX_MODULES:%=%_dist)
|
||||
|
||||
.PHONY: all implib clean
|
||||
#.PHONY: all implib install dist
|
||||
|
||||
|
||||
#
|
||||
# Other POSIX+ Modules
|
||||
#
|
||||
$(POSIX_OTHER): %:
|
||||
make -f Makefile -C $(POSIX_PATH)/$*
|
||||
|
||||
$(POSIX_OTHER:%=%_implib): %_implib:
|
||||
make -f Makefile -C $(POSIX_PATH)/$* implib
|
||||
|
||||
$(POSIX_OTHER:%=%_clean): %_clean:
|
||||
make -f Makefile -C $(POSIX_PATH)/$* clean
|
||||
|
||||
$(POSIX_OTHER:%=%_dist): %_dist:
|
||||
make -f Makefile -C $(POSIX_PATH)/$* dist
|
||||
|
||||
$(POSIX_OTHER:%=%_install): %_install:
|
||||
make -f Makefile -C $(POSIX_PATH)/$* install
|
||||
|
||||
.PHONY: $(POSIX_OTHER) $(POSIX_OTHER:%=%_implib) $(POSIX_OTHER:%=%_clean) $(POSIX_OTHER:%=%_install) $(POSIX_OTHER:%=%_dist)
|
||||
|
||||
|
||||
#
|
||||
# POSIX+ Tools
|
||||
#
|
||||
$(POSIX_TOOLS): %:
|
||||
make -f Makefile -C $(POSIX_PATH)/tools/$*
|
||||
|
||||
$(POSIX_TOOLS:%=%_implib): %_implib:
|
||||
make -f Makefile -C $(POSIX_PATH)/tools/$* implib
|
||||
|
||||
$(POSIX_TOOLS:%=%_clean): %_clean:
|
||||
make -f Makefile -C $(POSIX_PATH)/tools/$* clean
|
||||
|
||||
$(POSIX_TOOLS:%=%_dist): %_dist:
|
||||
make -f Makefile -C $(POSIX_PATH)/tools/$* dist
|
||||
|
||||
$(POSIX_TOOLS:%=%_install): %_install:
|
||||
make -f Makefile -C $(POSIX_PATH)/tools/$* install
|
||||
|
||||
.PHONY: $(POSIX_LIBS) $(POSIX_LIBS:%=%_implib) $(POSIX_LIBS:%=%_clean) $(POSIX_LIBS:%=%_install) $(POSIX_LIBS:%=%_dist)
|
||||
|
||||
|
||||
#
|
||||
# POSIX+ DLLs
|
||||
#
|
||||
$(POSIX_LIBS): %:
|
||||
make -f Makefile -C $(POSIX_PATH)/lib/$*
|
||||
|
||||
$(POSIX_LIBS:%=%_implib): %_implib:
|
||||
make -f Makefile -C $(POSIX_PATH)/lib/$* implib
|
||||
|
||||
$(POSIX_LIBS:%=%_clean): %_clean:
|
||||
make -f Makefile -C $(POSIX_PATH)/lib/$* clean
|
||||
|
||||
$(POSIX_LIBS:%=%_dist): %_dist:
|
||||
make -f Makefile -C $(POSIX_PATH)/lib/$* dist
|
||||
|
||||
$(POSIX_LIBS:%=%_install): %_install:
|
||||
make -f Makefile -C $(POSIX_PATH)/lib/$* install
|
||||
|
||||
.PHONY: $(POSIX_LIBS) $(POSIX_LIBS:%=%_implib) $(POSIX_LIBS:%=%_clean) $(POSIX_LIBS:%=%_install) $(POSIX_LIBS:%=%_dist)
|
||||
|
||||
|
||||
#
|
||||
# POSIX+ Programs
|
||||
#
|
||||
$(POSIX_APPS): %:
|
||||
make -f Makefile -C $(POSIX_PATH)/apps/$*
|
||||
|
||||
$(POSIX_APPS:%=%_implib): %_implib:
|
||||
make -f Makefile -C $(POSIX_PATH)/apps/$* implib
|
||||
|
||||
$(POSIX_APPS:%=%_clean): %_clean:
|
||||
make -f Makefile -C $(POSIX_PATH)/apps/$* clean
|
||||
|
||||
$(POSIX_APPS:%=%_dist): %_dist:
|
||||
make -f Makefile -C $(POSIX_PATH)/apps/$* dist
|
||||
|
||||
$(POSIX_APPS:%=%_install): %_install:
|
||||
make -f Makefile -C $(POSIX_PATH)/apps/$* install
|
||||
|
||||
.PHONY: $(POSIX_APPS) $(POSIX_APPS:%=%_implib) $(POSIX_APPS:%=%_clean) $(POSIX_APPS:%=%_install) $(POSIX_APPS:%=%_dist)
|
||||
|
||||
|
||||
etags:
|
||||
find . -name "*.[ch]" -print | etags --language=c -
|
||||
|
||||
# EOF
|
||||
|
||||
|
||||
|
||||
#CFLAGS=-Iinclude
|
||||
|
||||
#all: lib/crt0w32.o
|
||||
# make -C tools
|
||||
# make -C lib
|
||||
# make -C server
|
||||
# make -C lib/psxdll
|
||||
# make -C lib/psxx
|
||||
# make -C apps/baresh
|
||||
# make -C apps/posixw32
|
||||
|
||||
#lib/crt0w32.o: lib/crt0w32.c
|
||||
|
||||
#implib:
|
||||
|
||||
#clean:
|
||||
# make -C lib clean
|
||||
# make -C tools clean
|
||||
# make -C server clean
|
||||
# make -C lib/psxdll clean
|
||||
# make -C lib/psxx clean
|
||||
# make -C apps/baresh clean
|
||||
# make -C apps/posixw32 clean
|
||||
# - $(RM) lib/crt0w32.o
|
||||
|
||||
#include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
# EOF
|
||||
|
340
posix/copying
340
posix/copying
@@ -1,340 +0,0 @@
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
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 2 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, write to the Free Software
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
@@ -1,14 +0,0 @@
|
||||
<group>
|
||||
<directory name="tools">
|
||||
<xi:include href="tools/directory.xml" />
|
||||
</directory>
|
||||
<directory name="apps">
|
||||
<xi:include href="apps/directory.xml" />
|
||||
</directory>
|
||||
<directory name="lib">
|
||||
<xi:include href="lib/directory.xml" />
|
||||
</directory>
|
||||
<directory name="server">
|
||||
<xi:include href="server/psxsrv.xml" />
|
||||
</directory>
|
||||
</group>
|
@@ -3,7 +3,7 @@
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
675 Mass Ave, Cambridge, MA 02139, USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@@ -280,7 +280,7 @@ POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
Appendix: How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
@@ -292,7 +292,7 @@ convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
Copyright (C) 19yy <name of author>
|
||||
|
||||
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
|
||||
@@ -306,15 +306,14 @@ the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision version 69, Copyright (C) 19yy name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
@@ -4,7 +4,7 @@ Emanuele Aliberti <ea@iol.it>
|
||||
Robert Bergkvist <fragdance@hotmail.com>
|
||||
Hartmut Birr <hartmut.birr@gmx.de>
|
||||
Aleksey Bragin <aleksey@studiocerebral.com>
|
||||
Richard Campbell <betam4x@gmail.com>
|
||||
Richard Campbell <eek2121@comcast.net>
|
||||
Gunnar Andre' Dalsnes <hardon@online.no>
|
||||
Arindam Das
|
||||
Boudewijn Dekker <ariadne@xs4all.nl>
|
||||
@@ -46,9 +46,6 @@ Jason Weiler
|
||||
David Welch <welch@cwcom.net>
|
||||
Jonathan Wilson <jonwil@tpgi.com.au>
|
||||
Art Yerkes <ayerkes@speakeasy.net>
|
||||
Magnus Olsen (magnus@greatlord.com)
|
||||
Brandon Turner (turnerb7@msu.edu)
|
||||
Christoph von Wittich (Christoph@ApiViewer.de)
|
||||
|
||||
Graphic Design from
|
||||
|
||||
|
@@ -7,72 +7,67 @@ ReactOS from http://www.reactos.com.
|
||||
|
||||
2. Building ReactOS
|
||||
|
||||
2.1 Building the binaries
|
||||
|
||||
To build ReactOS run 'make' (wihout the quotes) if you are building on Linux
|
||||
or 'mingw32-make' if you are building on Windows (or ReactOS) from the top
|
||||
directory.
|
||||
|
||||
|
||||
2.2 Building a bootable CD image
|
||||
|
||||
To build a bootable CD image run 'make bootcd' (wihout the quotes) if you are
|
||||
building on Linux or 'mingw32-make bootcd' if you are building on Windows (or
|
||||
ReactOS) from the top directory. This will create a CD image with a filename,
|
||||
ReactOS.iso, in the top directory.
|
||||
To build from Windows run 'make' (wihout the quotes) from the top directory.
|
||||
To build from unix, edit rules.mak and change the PREFIX variable to the
|
||||
correct value for your cross-compiler. Run 'export HOST=mingw32-linux' to
|
||||
tell the ReactOS build system that it is building ReactOS on a linux machine.
|
||||
Now run 'make'.
|
||||
|
||||
|
||||
3. Installation
|
||||
|
||||
ReactOS can only be installed on a machine that has a FAT16 or FAT32 partition
|
||||
as the active (bootable) partition. The partition on which ReactOS is to be
|
||||
installed (which may or may not be the bootable partition) must also be
|
||||
formatted as FAT16 or FAT32. ReactOS Setup can format the partitions if
|
||||
needed.
|
||||
The system can only be installed on the first partition on the first harddisk.
|
||||
The partition must be formatted as FAT16 or FAT32. The system can only be
|
||||
started from DOS and not from a Windows DOS-prompt.
|
||||
|
||||
ReactOS can be installed from the source distribution or from the bootable CD
|
||||
ReactOS can be installed from the source distribution or from the binary
|
||||
distribution. The two ways to install ReactOS are explained below.
|
||||
|
||||
|
||||
3.1 Installation from sources
|
||||
|
||||
If you don't have an existing ReactOS installation you want to upgrade, then
|
||||
build a bootable CD as described above. Burn the CD image, boot from it, and
|
||||
follow the instructions to install ReactOS.
|
||||
To install ReactOS after building it, type 'make install'. This will create
|
||||
the directory 'reactos' in the top directory. Copy this directory to the root
|
||||
of your first partition on your first harddisk. This is usually c:\ on a
|
||||
Windows machine.
|
||||
|
||||
If you have an existing ReactOS installation you want to upgrade, then to
|
||||
install ReactOS after building it, type 'make install' or
|
||||
'mingw32-make install'. This will create the directory 'reactos' in the top
|
||||
directory. Copy the contents of this directory over the existing installation.
|
||||
If you don't want to copy the files manually every time you run a 'make install',
|
||||
you can specify the directory where the files are to be copied to during
|
||||
installation.
|
||||
|
||||
If you don't want to copy the files manually every time you run a
|
||||
'make install' or 'mingw32-make install', then you can specify the directory
|
||||
where the files are to be copied to during installation.
|
||||
In rules.mak find the variable INSTALL_DIR and change the assigned value to the
|
||||
name of the directory where the files are to be copied to. If you are using
|
||||
Windows this could be:
|
||||
|
||||
Set the ROS_INSTALL environment variable. If you are on Windows this could be
|
||||
done by:
|
||||
INSTALL_DIR = c:\reactos
|
||||
|
||||
set ROS_INSTALL=c:\reactos
|
||||
If you are on linux this could be:
|
||||
|
||||
If you are on Linux this could be done by:
|
||||
INSTALL_DIR = /mnt/windows/reactos
|
||||
|
||||
export ROS_INSTALL=/mnt/windows/reactos
|
||||
|
||||
Now run 'make install' or 'mingw32-make install' to install the files to the
|
||||
new location.
|
||||
Save the changes to rules.mak and run 'make install' to install the files to
|
||||
the new location. If you don't want to change rules.mak, you can specify the
|
||||
installtion directory when invoking make. Run
|
||||
'make INSTALL_DIR=c:\reactos install' to install to c:\reactos.
|
||||
|
||||
|
||||
3.2 Installation from bootable CD distribution
|
||||
3.2 Installation from binany distribution
|
||||
|
||||
To install ReactOS from the bootable CD distribution, extract the archive
|
||||
contents. Then burn the CD image, boot from it, and follow instructions.
|
||||
To install ReactOS from the binary distribution, extract the archive contents
|
||||
to c:\reactos. Remember to extract the files with full paths.
|
||||
|
||||
|
||||
4. Booting ReactOS
|
||||
|
||||
Startup in DOS mode. 'cd' to c:\reactos and type 'boot' and press <enter>.
|
||||
A simple shell is started where you can use simple commands like 'cd' and 'dir'.
|
||||
|
||||
|
||||
5. Help
|
||||
|
||||
If you run into problems or have suggestions for making ReactOS better, please
|
||||
visit the address below and subscribe to one or more of the mailing lists.
|
||||
surf to the address below and subscribe to one or more of the mailing lists.
|
||||
|
||||
http://www.reactos.com/en/content/view/full/66
|
||||
http://www.reactos.com/index.php?tab=discussion§ion=lists
|
||||
|
||||
ReactOS Development Team
|
||||
|
5
reactos/Jamfile
Normal file
5
reactos/Jamfile
Normal file
@@ -0,0 +1,5 @@
|
||||
# Main jamfile for ReactOS
|
||||
|
||||
SubDir ROS_TOP ;
|
||||
|
||||
SubInclude ROS_TOP Lib ;
|
54
reactos/Jamrules
Normal file
54
reactos/Jamrules
Normal file
@@ -0,0 +1,54 @@
|
||||
# customization for ReactOS goes here
|
||||
|
||||
# The SharedLibrary and SharedLibraryFromObjects rules were
|
||||
# borrowed from here:
|
||||
# http://www.differentpla.net/~roger/devel/jam/tutorial/shared_lib/index.html
|
||||
|
||||
SUFSHR = .dll ;
|
||||
RM = rm ; # rm comes with MinGW, and the default del doesn't work in some cases
|
||||
|
||||
rule SharedLibrary
|
||||
{
|
||||
SharedLibraryFromObjects $(<) : $(>:S=$(SUFOBJ)) ;
|
||||
Objects $(>) ;
|
||||
}
|
||||
|
||||
rule SharedLibraryFromObjects
|
||||
{
|
||||
local _s _t ;
|
||||
|
||||
# Add grist to file names
|
||||
# Add suffix to dll
|
||||
|
||||
_s = [ FGristFiles $(>) ] ;
|
||||
_t = [ FAppendSuffix $(<) : $(SUFSHR) ] ;
|
||||
|
||||
if $(_t) != $(<)
|
||||
{
|
||||
DEPENDS $(<) : $(_t) ;
|
||||
NOTFILE $(<) ;
|
||||
}
|
||||
|
||||
# make compiled sources a dependency of target
|
||||
|
||||
DEPENDS exe : $(_t) ;
|
||||
DEPENDS $(_t) : $(_s) ;
|
||||
MakeLocate $(_t) : $(LOCATE_TARGET) ;
|
||||
|
||||
Clean clean : $(_t) ;
|
||||
|
||||
Link $(_t) : $(_s) ;
|
||||
}
|
||||
|
||||
# nasm needs to know the output file first, or it doesn't
|
||||
# recognize -I :(
|
||||
actions As
|
||||
{
|
||||
$(AS) -o $(<) $(ASFLAGS) -I$(HDRS) $(>)
|
||||
}
|
||||
|
||||
AS = nasm ;
|
||||
|
||||
# why isn't DEFINES working? :(
|
||||
#DEFINES += _M_IX86 ;
|
||||
CCFLAGS += -D_M_IX86 ;
|
@@ -2,7 +2,7 @@
|
||||
Version 2.1, February 1999
|
||||
|
||||
Copyright (C) 1991, 1999 Free Software Foundation, Inc.
|
||||
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
@@ -485,7 +485,7 @@ convey the exclusion of warranty; and each file should have at least the
|
||||
|
||||
You should have received a copy of the GNU Lesser General Public
|
||||
License along with this library; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
|
1427
reactos/Makefile
1427
reactos/Makefile
File diff suppressed because it is too large
Load Diff
@@ -1,91 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
|
||||
<project name="ReactOS" makefile="makefile.ppc" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="config-ppc.xml">
|
||||
<xi:fallback>
|
||||
<xi:include href="config.template.xml" />
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
|
||||
<xi:include href="baseaddress.xml" />
|
||||
|
||||
<property name="BOOTPROG_PREPARE" value="ppc-le2be" />
|
||||
<property name="BOOTPROG_FLATFORMAT" value="-O elf32-powerpc -B powerpc:common" />
|
||||
<property name="BOOTPROG_LINKFORMAT" value="-melf32ppc --no-omagic -Ttext 0xe00000 -Tdata 0xe10000" />
|
||||
<property name="BOOTPROG_COPYFORMAT" value="--only-section=.text --only-section=.data --only-section=.bss -O aixcoff-rs6000" />
|
||||
|
||||
<define name="_M_PPC" />
|
||||
<define name="_PPC_" />
|
||||
<define name="__PowerPC__" />
|
||||
<define name="_REACTOS_" />
|
||||
<define name="__MINGW_IMPORT" empty="true" />
|
||||
<define name="__restrict__" empty="true" />
|
||||
<compilerflag>-v</compilerflag>
|
||||
<if property="MP" value="1">
|
||||
<define name="CONFIG_SMP" value="1" />
|
||||
</if>
|
||||
<if property="DBG" value="1">
|
||||
<define name="DBG" value="1" />
|
||||
<property name="DBG_OR_KDBG" value="true" />
|
||||
</if>
|
||||
<if property="DBG" value="0">
|
||||
<compilerflag>-Os</compilerflag>
|
||||
<compilerflag>-Wno-strict-aliasing</compilerflag>
|
||||
</if>
|
||||
<if property="KDBG" value="1">
|
||||
<define name="KDBG" value="1" />
|
||||
<property name="DBG_OR_KDBG" value="true" />
|
||||
</if>
|
||||
<compilerflag>-Wpointer-arith</compilerflag>
|
||||
|
||||
<include>.</include>
|
||||
<include>include</include>
|
||||
<include>include/reactos</include>
|
||||
<include>include/libs</include>
|
||||
<include>include/drivers</include>
|
||||
<include>include/subsys</include>
|
||||
<include>include/ndk</include>
|
||||
<include>w32api/include</include>
|
||||
<include>w32api/include/crt</include>
|
||||
<include>w32api/include/ddk</include>
|
||||
|
||||
<directory name="apps">
|
||||
<xi:include href="apps/directory.xml" />
|
||||
</directory>
|
||||
<directory name="boot">
|
||||
<xi:include href="boot/boot.xml" />
|
||||
</directory>
|
||||
<directory name="bootdata">
|
||||
<xi:include href="bootdata/bootdata.xml" />
|
||||
</directory>
|
||||
<directory name="drivers">
|
||||
<xi:include href="drivers/directory.xml" />
|
||||
</directory>
|
||||
<directory name="hal">
|
||||
<xi:include href="hal/directory.xml" />
|
||||
</directory>
|
||||
<directory name="include">
|
||||
<xi:include href="include/directory.xml" />
|
||||
</directory>
|
||||
<directory name="lib">
|
||||
<xi:include href="lib/directory.xml" />
|
||||
</directory>
|
||||
<directory name="media">
|
||||
<xi:include href="media/directory.xml" />
|
||||
</directory>
|
||||
<directory name="modules">
|
||||
<xi:include href="modules/directory.xml" />
|
||||
</directory>
|
||||
<directory name="ntoskrnl">
|
||||
<xi:include href="ntoskrnl/ntoskrnl.xml" />
|
||||
</directory>
|
||||
<directory name="regtests">
|
||||
<xi:include href="regtests/directory.xml" />
|
||||
</directory>
|
||||
<directory name="services">
|
||||
<xi:include href="services/directory.xml" />
|
||||
</directory>
|
||||
<directory name="subsys">
|
||||
<xi:include href="subsys/directory.xml" />
|
||||
</directory>
|
||||
</project>
|
@@ -1,86 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE project SYSTEM "tools/rbuild/project.dtd">
|
||||
<project name="ReactOS" makefile="makefile.auto" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="config.xml">
|
||||
<xi:fallback>
|
||||
<xi:include href="config.template.xml" />
|
||||
</xi:fallback>
|
||||
</xi:include>
|
||||
|
||||
<xi:include href="baseaddress.xml" />
|
||||
|
||||
<define name="_M_IX86" />
|
||||
<define name="_X86_" />
|
||||
<define name="__i386__" />
|
||||
<define name="_REACTOS_" />
|
||||
<if property="MP" value="1">
|
||||
<define name="CONFIG_SMP" value="1" />
|
||||
</if>
|
||||
<if property="DBG" value="1">
|
||||
<define name="DBG" value="1" />
|
||||
<property name="DBG_OR_KDBG" value="true" />
|
||||
</if>
|
||||
<if property="DBG" value="0">
|
||||
<compilerflag>-Os</compilerflag>
|
||||
<compilerflag>-Wno-strict-aliasing</compilerflag>
|
||||
<compilerflag>-ftracer</compilerflag>
|
||||
<compilerflag>-momit-leaf-frame-pointer</compilerflag>
|
||||
<compilerflag>-mpreferred-stack-boundary=2</compilerflag>
|
||||
</if>
|
||||
<if property="KDBG" value="1">
|
||||
<define name="KDBG" value="1" />
|
||||
<property name="DBG_OR_KDBG" value="true" />
|
||||
</if>
|
||||
<compilerflag>-Wpointer-arith</compilerflag>
|
||||
|
||||
<include>.</include>
|
||||
<include>include</include>
|
||||
<include>include/reactos</include>
|
||||
<include>include/libs</include>
|
||||
<include>include/drivers</include>
|
||||
<include>include/subsys</include>
|
||||
<include>include/ndk</include>
|
||||
<include>w32api/include</include>
|
||||
<include>w32api/include/crt</include>
|
||||
<include>w32api/include/ddk</include>
|
||||
|
||||
<directory name="apps">
|
||||
<xi:include href="apps/directory.xml" />
|
||||
</directory>
|
||||
<directory name="boot">
|
||||
<xi:include href="boot/boot.xml" />
|
||||
</directory>
|
||||
<directory name="bootdata">
|
||||
<xi:include href="bootdata/bootdata.xml" />
|
||||
</directory>
|
||||
<directory name="drivers">
|
||||
<xi:include href="drivers/directory.xml" />
|
||||
</directory>
|
||||
<directory name="hal">
|
||||
<xi:include href="hal/directory.xml" />
|
||||
</directory>
|
||||
<directory name="include">
|
||||
<xi:include href="include/directory.xml" />
|
||||
</directory>
|
||||
<directory name="lib">
|
||||
<xi:include href="lib/directory.xml" />
|
||||
</directory>
|
||||
<directory name="media">
|
||||
<xi:include href="media/directory.xml" />
|
||||
</directory>
|
||||
<directory name="modules">
|
||||
<xi:include href="modules/directory.xml" />
|
||||
</directory>
|
||||
<directory name="ntoskrnl">
|
||||
<xi:include href="ntoskrnl/ntoskrnl.xml" />
|
||||
</directory>
|
||||
<directory name="regtests">
|
||||
<xi:include href="regtests/directory.xml" />
|
||||
</directory>
|
||||
<directory name="services">
|
||||
<xi:include href="services/directory.xml" />
|
||||
</directory>
|
||||
<directory name="subsys">
|
||||
<xi:include href="subsys/directory.xml" />
|
||||
</directory>
|
||||
</project>
|
@@ -11,11 +11,15 @@ iphlpapi.dll reactos/lib/iphlpapi
|
||||
kernel32.dll reactos/lib/kernel32
|
||||
lz32.dll reactos/lib/lzexpand
|
||||
msvcrt.dll reactos/lib/msvcrt
|
||||
ole32.dll reactos/lib/ole32
|
||||
oleaut32.dll reactos/lib/oleaut32
|
||||
rpcrt4.dll reactos/lib/rpcrt4
|
||||
secur32.dll reactos/lib/secur32
|
||||
shell32.dll reactos/lib/shell32
|
||||
snmpapi.dll reactos/lib/snmpapi
|
||||
user32.dll reactos/lib/user32
|
||||
version.dll reactos/lib/version
|
||||
winmm.dll reactos/lib/winmm
|
||||
winspool.dll reactos/lib/winspool
|
||||
ws2_32.dll reactos/lib/ws2_32
|
||||
wsock32.dll reactos/lib/wsock32
|
||||
|
13
reactos/apps/Makefile
Normal file
13
reactos/apps/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
# $Id$
|
||||
#
|
||||
# ReactOS apps and tools makefile to generate Doxygen documentation
|
||||
#
|
||||
|
||||
|
||||
docu:
|
||||
doxygen Doxyfile
|
||||
|
||||
.PHONY: docu
|
||||
|
||||
|
||||
# EOF
|
@@ -1,3 +0,0 @@
|
||||
<directory name="utils">
|
||||
<xi:include href="utils/directory.xml" />
|
||||
</directory>
|
162
reactos/apps/testsets/Makefile
Normal file
162
reactos/apps/testsets/Makefile
Normal file
@@ -0,0 +1,162 @@
|
||||
#
|
||||
# ReactOS system testsets makefile
|
||||
#
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
|
||||
# Testset applications
|
||||
TEST_SETS = loadlib
|
||||
|
||||
TEST_KERNEL32 =
|
||||
|
||||
TEST_MSVCRT =
|
||||
|
||||
TEST_COM =
|
||||
|
||||
TEST_SEH =
|
||||
|
||||
TEST_REGRESSIONS =
|
||||
|
||||
all: $(TEST_SETS) $(TEST_KERNEL32) $(TEST_MSVCRT) $(TEST_COM) $(TEST_SEH) $(TEST_REGRESSIONS)
|
||||
|
||||
depends:
|
||||
|
||||
implib: $(TEST_SETS:%=%_implib) \
|
||||
$(TEST_KERNEL32:%=%_implib) \
|
||||
$(TEST_MSVCRT:%=%_implib) \
|
||||
$(TEST_COM:%=%_implib) \
|
||||
$(TEST_SEH:%=%_implib) \
|
||||
$(TEST_REGRESSIONS:%=%_implib)
|
||||
|
||||
clean: $(TEST_SETS:%=%_clean) \
|
||||
$(TEST_KERNEL32:%=%_clean) \
|
||||
$(TEST_MSVCRT:%=%_clean) \
|
||||
$(TEST_COM:%=%_clean) \
|
||||
$(TEST_SEH:%=%_clean) \
|
||||
$(TEST_REGRESSIONS:%=%_clean)
|
||||
|
||||
install: $(TEST_SETS:%=%_install) \
|
||||
$(TEST_KERNEL32:%=%_install) \
|
||||
$(TEST_MSVCRT:%=%_install) \
|
||||
$(TEST_COM:%=%_install) \
|
||||
$(TEST_SEH:%=%_install) \
|
||||
$(TEST_REGRESSIONS:%=%_install)
|
||||
|
||||
.PHONY: all depends implib clean install
|
||||
|
||||
|
||||
#
|
||||
# Testset Applications
|
||||
#
|
||||
$(TEST_SETS): %:
|
||||
$(MAKE) -C $*
|
||||
|
||||
$(TEST_SETS:%=%_implib): %_implib:
|
||||
$(MAKE) -C $* implib
|
||||
|
||||
$(TEST_SETS:%=%_clean): %_clean:
|
||||
$(MAKE) -C $* clean
|
||||
|
||||
$(TEST_SETS:%=%_install): %_install:
|
||||
$(MAKE) -C $* install
|
||||
|
||||
.PHONY: $(TEST_SETS) $(TEST_SETS:%=%_implib) $(TEST_SETS:%=%_clean) $(TEST_SETS:%=%_install)
|
||||
|
||||
|
||||
#
|
||||
# Kernel32 Test Applications
|
||||
#
|
||||
$(TEST_KERNEL32): %:
|
||||
$(MAKE) -C kernel32/$*
|
||||
|
||||
$(TEST_KERNEL32:%=%_implib): %_implib:
|
||||
$(MAKE) -C kernel32/$* implib
|
||||
|
||||
$(TEST_KERNEL32:%=%_clean): %_clean:
|
||||
$(MAKE) -C kernel32/$* clean
|
||||
|
||||
$(TEST_KERNEL32:%=%_install): %_install:
|
||||
$(MAKE) -C kernel32/$* install
|
||||
|
||||
.PHONY: $(TEST_KERNEL32) $(TEST_KERNEL32:%=%_implib) $(TEST_KERNEL32:%=%_clean) $(TEST_KERNEL32:%=%_install)
|
||||
|
||||
|
||||
#
|
||||
# msvcrt Test Applications
|
||||
#
|
||||
$(TEST_MSVCRT): %:
|
||||
$(MAKE) -C msvcrt/$*
|
||||
|
||||
$(TEST_MSVCRT:%=%_implib): %_implib:
|
||||
$(MAKE) -C msvcrt/$* implib
|
||||
|
||||
$(TEST_MSVCRT:%=%_clean): %_clean:
|
||||
$(MAKE) -C msvcrt/$* clean
|
||||
|
||||
$(TEST_MSVCRT:%=%_install): %_install:
|
||||
$(MAKE) -C msvcrt/$* install
|
||||
|
||||
.PHONY: $(TEST_MSVCRT) $(TEST_MSVCRT:%=%_implib) $(TEST_MSVCRT:%=%_clean) $(TEST_MSVCRT:%=%_install)
|
||||
|
||||
|
||||
#
|
||||
# COM Test Applications
|
||||
#
|
||||
$(TEST_COM): %:
|
||||
$(MAKE) -C com/$*
|
||||
|
||||
$(TEST_COM:%=%_implib): %_implib:
|
||||
$(MAKE) -C com/$* implib
|
||||
|
||||
$(TEST_COM:%=%_clean): %_clean:
|
||||
$(MAKE) -C com/$* clean
|
||||
|
||||
$(TEST_COM:%=%_install): %_install:
|
||||
$(MAKE) -C com/$* install
|
||||
|
||||
.PHONY: $(TEST_COM) $(TEST_COM:%=%_implib) $(TEST_COM:%=%_clean) $(TEST_COM:%=%_install)
|
||||
|
||||
|
||||
#
|
||||
# SEH Test Applications
|
||||
#
|
||||
$(TEST_SEH): %:
|
||||
$(MAKE) -C seh/$*
|
||||
|
||||
$(TEST_SEH:%=%_implib): %_implib:
|
||||
$(MAKE) -C seh/$* implib
|
||||
|
||||
$(TEST_SEH:%=%_clean): %_clean:
|
||||
$(MAKE) -C seh/$* clean
|
||||
|
||||
$(TEST_SEH:%=%_install): %_install:
|
||||
$(MAKE) -C seh/$* install
|
||||
|
||||
.PHONY: $(TEST_SEH) $(TEST_SEH:%=%_implib) $(TEST_SEH:%=%_clean) $(TEST_SEH:%=%_install)
|
||||
|
||||
|
||||
#
|
||||
# Regression Test Applications
|
||||
#
|
||||
$(TEST_REGRESSIONS): %:
|
||||
$(MAKE) -C regres/$*
|
||||
|
||||
$(TEST_REGRESSIONS:%=%_implib): %_implib:
|
||||
$(MAKE) -C regres/$* implib
|
||||
|
||||
$(TEST_REGRESSIONS:%=%_clean): %_clean:
|
||||
$(MAKE) -C regres/$* clean
|
||||
|
||||
$(TEST_REGRESSIONS:%=%_install): %_install:
|
||||
$(MAKE) -C regres/$* install
|
||||
|
||||
.PHONY: $(TEST_REGRESSIONS) $(TEST_REGRESSIONS:%=%_implib) $(TEST_REGRESSIONS:%=%_clean) $(TEST_REGRESSIONS:%=%_install)
|
||||
|
||||
|
||||
etags:
|
||||
find . -name "*.[ch]" -print | etags --language=c -
|
||||
|
||||
# EOF
|
24
reactos/apps/testsets/loadlib/makefile
Normal file
24
reactos/apps/testsets/loadlib/makefile
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# $Id: makefile,v 1.0
|
||||
|
||||
PATH_TO_TOP = ../../..
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = loadlib
|
||||
|
||||
TARGET_CFLAGS = -Wall -Werror -D_USE_W32API -DUNICODE -D_UNICODE
|
||||
|
||||
TARGET_SDKLIBS = kernel32.a ntdll.a
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
27
reactos/apps/testsets/msvcrt/fileio/makefile
Normal file
27
reactos/apps/testsets/msvcrt/fileio/makefile
Normal file
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# $Id: makefile,v 1.0
|
||||
|
||||
PATH_TO_TOP = ../../../..
|
||||
|
||||
TEST_ROOT = $(PATH_TO_TOP)/apps/testsets/test
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = fileio
|
||||
|
||||
#TARGET_CFLAGS = -I$(TEST_ROOT) -DDBG -DUNICODE -D_UNICODE
|
||||
TARGET_CFLAGS = -I$(TEST_ROOT) -DDBG
|
||||
|
||||
TARGET_SDKLIBS = ntdll.a kernel32.a
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o wfileio.o main.o
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
71
reactos/apps/utils/Makefile
Normal file
71
reactos/apps/utils/Makefile
Normal file
@@ -0,0 +1,71 @@
|
||||
#
|
||||
# ReactOS system utilities makefile
|
||||
#
|
||||
|
||||
PATH_TO_TOP = ../..
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
|
||||
# Console system utilities
|
||||
# cabman cat net objdir partinfo pice ps sc stats
|
||||
UTIL_APPS = cat objdir partinfo pnpdump sc shutdown stats tickcount ps
|
||||
|
||||
UTIL_NET_APPS = arp finger ftp ipconfig netstat ping route telnet whois
|
||||
|
||||
|
||||
all: $(UTIL_APPS) $(UTIL_NET_APPS)
|
||||
|
||||
depends:
|
||||
|
||||
implib: $(UTIL_APPS:%=%_implib) \
|
||||
$(UTIL_NET_APPS:%=%_implib)
|
||||
|
||||
clean: $(UTIL_APPS:%=%_clean) \
|
||||
$(UTIL_NET_APPS:%=%_clean)
|
||||
|
||||
install: $(UTIL_APPS:%=%_install) \
|
||||
$(UTIL_NET_APPS:%=%_install)
|
||||
|
||||
.PHONY: all depends implib clean install
|
||||
|
||||
|
||||
#
|
||||
# Utility Applications
|
||||
#
|
||||
$(UTIL_APPS): %:
|
||||
$(MAKE) -C $*
|
||||
|
||||
$(UTIL_APPS:%=%_implib): %_implib:
|
||||
$(MAKE) -C $* implib
|
||||
|
||||
$(UTIL_APPS:%=%_clean): %_clean:
|
||||
$(MAKE) -C $* clean
|
||||
|
||||
$(UTIL_APPS:%=%_install): %_install:
|
||||
$(MAKE) -C $* install
|
||||
|
||||
.PHONY: $(UTIL_APPS) $(UTIL_APPS:%=%_implib) $(UTIL_APPS:%=%_clean) $(UTIL_APPS:%=%_install)
|
||||
|
||||
#
|
||||
# GUI Utility Applications
|
||||
#
|
||||
$(UTIL_NET_APPS): %:
|
||||
$(MAKE) -C net/$*
|
||||
|
||||
$(UTIL_NET_APPS:%=%_implib): %_implib:
|
||||
$(MAKE) -C net/$* implib
|
||||
|
||||
$(UTIL_NET_APPS:%=%_clean): %_clean:
|
||||
$(MAKE) -C net/$* clean
|
||||
|
||||
$(UTIL_NET_APPS:%=%_install): %_install:
|
||||
$(MAKE) -C net/$* install
|
||||
|
||||
.PHONY: $(UTIL_NET_APPS) $(UTIL_NET_APPS:%=%_implib) $(UTIL_NET_APPS:%=%_clean) $(UTIL_NET_APPS:%=%_install)
|
||||
|
||||
|
||||
etags:
|
||||
find . -name "*.[ch]" -print | etags --language=c -
|
||||
|
||||
# EOF
|
21
reactos/apps/utils/binpatch/Makefile
Normal file
21
reactos/apps/utils/binpatch/Makefile
Normal file
@@ -0,0 +1,21 @@
|
||||
PATH_TO_TOP = ../../..
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = binpatch
|
||||
|
||||
TARGET_SDKLIBS =
|
||||
|
||||
TARGET_OBJECTS = patch.o
|
||||
|
||||
TARGET_CFLAGS += -Wall -Werror
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@ int main(int argc, char* argv[])
|
||||
int i;
|
||||
FILE* in;
|
||||
char ch;
|
||||
|
||||
|
||||
for (i=1; i<argc; i++)
|
||||
{
|
||||
in = fopen(argv[i],"r");
|
||||
@@ -15,7 +15,7 @@ int main(int argc, char* argv[])
|
||||
printf("Failed to open file %s\n", argv[i]);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
while ((ch = fgetc(in)) != EOF)
|
||||
{
|
||||
putchar(ch);
|
||||
|
21
reactos/apps/utils/cat/makefile
Normal file
21
reactos/apps/utils/cat/makefile
Normal file
@@ -0,0 +1,21 @@
|
||||
# $Id$
|
||||
|
||||
PATH_TO_TOP = ../../..
|
||||
|
||||
TARGET_NORC = yes
|
||||
|
||||
TARGET_TYPE = program
|
||||
|
||||
TARGET_APPTYPE = console
|
||||
|
||||
TARGET_NAME = cat
|
||||
|
||||
TARGET_OBJECTS = $(TARGET_NAME).o
|
||||
|
||||
TARGET_CFLAGS = -Wall -Werror
|
||||
|
||||
include $(PATH_TO_TOP)/rules.mak
|
||||
|
||||
include $(TOOLS_PATH)/helper.mk
|
||||
|
||||
# EOF
|
@@ -1,17 +0,0 @@
|
||||
<group>
|
||||
<directory name="net">
|
||||
<xi:include href="net/directory.xml" />
|
||||
</directory>
|
||||
<directory name="getfirefox">
|
||||
<xi:include href="getfirefox/getfirefox.xml" />
|
||||
</directory>
|
||||
<directory name="shutdown">
|
||||
<xi:include href="shutdown/shutdown.xml" />
|
||||
</directory>
|
||||
<directory name="ps">
|
||||
<xi:include href="ps/ps.xml" />
|
||||
</directory>
|
||||
<directory name="rosperf">
|
||||
<xi:include href="rosperf/rosperf.xml" />
|
||||
</directory>
|
||||
</group>
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user