-/*
+/*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS test application
* FILE: apps/net/netreg/netreg.cpp
using std::string;
using std::ostringstream;
-const char *root_entries[] = {
+const char *root_entries[] = {
"HKEY_LOCAL_MACHINE",
"HKEY_CURRENT_USER",
"HKEY_CLASSES_ROOT",
space_pos++;
if( full_input[space_pos] != '/' ) { state = SHOULD_DIE; return; }
space_pos++;
- string reg_key_and_remainder =
+ string reg_key_and_remainder =
full_input.substr( space_pos, full_input.size() - space_pos );
space_pos = reg_key_and_remainder.find( ' ' );
if( space_pos == string::npos ) { state = SHOULD_DIE; return; }
}
}
void OkToSend() {
- int rv = send( socket,
- remaining_output.c_str(),
+ int rv = send( socket,
+ remaining_output.c_str(),
remaining_output.size(), 0 );
if( rv < 0 ) {
state = SHOULD_DIE;
return;
} else {
- remaining_output =
+ remaining_output =
remaining_output.substr( rv, remaining_output.size() - rv );
if( remaining_output.size() == 0 ) {
state = SHOULD_DIE;
bool WantPollout() const {
return state == REQUEST_RECVD_SENDING_REPLY;
}
-
+
private:
string urlenc( string in ) {
for( string::iterator i = in.begin();
i != in.end();
i++ ) {
- if( isalnum( *i ) || *i == '/' )
- out << *i;
+ if( isalnum( *i ) || *i == '/' )
+ out << *i;
else {
char minibuf[10];
sprintf( minibuf, "%02x", *i );
buf[1] = *i;
buf[2] = 0;
sscanf( buf, "%x", &res );
- fprintf( stderr, "Interpreting %c%c as %02x\n",
- buf[0], buf[1],
+ fprintf( stderr, "Interpreting %c%c as %02x\n",
+ buf[0], buf[1],
res );
out += (char)res;
}
string dump_one_line( const char *data, int llen, int len, int addr ) {
ostringstream out;
int i;
-
+
out << setw( 8 ) << setfill( '0' ) << hex << addr << ": ";
-
+
for( i = 0; i < llen; i++ ) {
- if( i < len ) out << setw( 2 ) << setfill( '0' ) << hex <<
+ if( i < len ) out << setw( 2 ) << setfill( '0' ) << hex <<
(data[i] & 0xff) << " ";
else out << " ";
}
out << " : ";
for( i = 0; i < llen; i++ ) {
- if( i < len && i < llen &&
+ if( i < len && i < llen &&
data[i] >= ' ' && data[i] < 0x7f ) out << data[i]; else out << '.';
}
int addr = 0;
out += "<pre>";
-
+
while( data < end ) {
out += dump_one_line( data, 16, end - data, addr );
addr += 16;
DWORD num_values;
DWORD max_value_name_len;
DWORD max_value_len;
-
+
char *value_name_buf;
char *value_buf;
char *key_name_buf;
process_invalid_request( key_name );
return;
}
-
+
value_name_buf = new char [max_value_name_len+1];
value_buf = new char [max_value_len+1];
key_name_buf = new char [max_subkey_len+1];
if( ending_slash != string::npos )
up_level = key_name.substr( 0, ending_slash );
- text_out << "HTTP/1.0 200 OK\r\n"
+ text_out << "HTTP/1.0 200 OK\r\n"
<< "Content-Type: text/html\r\n"
<< "\r\n"
<< "<html><head><title>Registry Key `"
<< "<a href='/" << urlenc(up_level)
<< "'>(Up one level)</a><p>\r\n"
<< "<h2>Subkeys:</h2><table border='1'>\r\n";
-
+
DWORD which_index;
DWORD key_name_size;
-
+
for( which_index = 0; which_index < num_sub_keys; which_index++ ) {
key_name_size = max_subkey_len+1;
RegEnumKeyEx( open_reg_key,
<< string(key_name_buf,key_name_size)
<< "</a></td></tr>\r\n";
}
-
+
text_out << "</table><h2>Values:</h2><table border='1'>\r\n";
-
+
DWORD value_name_size;
DWORD value_data_size;
DWORD value_type;
(BYTE *)value_buf,
&value_data_size );
- text_out << "<tr><td><b>" << string(value_name_buf,value_name_size)
+ text_out << "<tr><td><b>" << string(value_name_buf,value_name_size)
<< "</b></td><td>"
<< present_value( value_type, value_buf, value_data_size )
<< "</td></tr>";
}
-
+
text_out << "</ul></body></html>\r\n";
-
+
delete [] key_name_buf;
delete [] value_name_buf;
delete [] value_buf;
for( i = 0; root_entries[i]; i++ )
text_out << "<li>"
- << "<a href='/" << urlenc(root_entries[i])
+ << "<a href='/" << urlenc(root_entries[i])
<< "'>" << root_entries[i]
<< "</a></li>\r\n";
// Parse the key name...
size_t slash = reg_key.find( '/' );
string reg_initial = "";
-
+
if( slash == string::npos ) // A root key...
reg_initial = reg_key;
else // Any other key
reg_initial = reg_key.substr( 0, slash );
-
- fprintf( stderr, "reg_init = %s, reg_key = %s\n",
+
+ fprintf( stderr, "reg_init = %s, reg_key = %s\n",
reg_initial.c_str(),
reg_key.c_str() );
- for( i = 0; root_entries[i]; i++ )
+ for( i = 0; root_entries[i]; i++ )
if( reg_initial == root_entries[i] ) hRegKey = root_handles[i];
if( hRegKey != 0 && reg_initial != reg_key ) {
if( slash != string::npos ) {
reg_single_key = reg_open_path.substr( 0, slash );
- reg_open_path = reg_open_path.substr( slash+1,
+ reg_open_path = reg_open_path.substr( slash+1,
reg_open_path.size() );
}
fprintf( stderr, "Opening %s\n", reg_single_key.c_str() );
- if( RegOpenKey( hRegKey, reg_single_key.c_str(), &hRegKey ) !=
+ if( RegOpenKey( hRegKey, reg_single_key.c_str(), &hRegKey ) !=
ERROR_SUCCESS ) {
hRegKey = 0;
break;
SOCKET make_listening_socket( int port ) {
struct sockaddr_in sa;
-
+
ZeroMemory( &sa, sizeof( sa ) );
-
+
sa.sin_family = PF_INET;
sa.sin_port = ntohs( port );
-
+
fprintf( stderr, "Creating the listener\n" );
SOCKET l = socket( PF_INET, SOCK_STREAM, 0 );
fprintf( stderr, "Socket %x\n", l );
FD_SET(listen_socket,&pollin);
active_fds = select( active_fds, &pollin, &pollout, &pollerr, NULL );
-
+
if( active_fds > 0 ) {
if( FD_ISSET(listen_socket,&pollin) ) {
SOCKET ns = accept( listen_socket, NULL, NULL );