smolstuf
This commit is contained in:
+11
-10
@@ -99,35 +99,36 @@ String mysql_escape(String raw, char quote_char)
|
||||
DValue field_to_dv_node(char* data_ptr, MySQLFieldInfo field_info, u32 len)
|
||||
{
|
||||
DValue result;
|
||||
if(data_ptr == 0)
|
||||
return(result);
|
||||
String raw(data_ptr, len);
|
||||
switch(field_info.type)
|
||||
{
|
||||
case(MYSQL_TYPE_TINY):
|
||||
result.set(atoll(data_ptr));
|
||||
result.set(atoll(raw.c_str()));
|
||||
break;
|
||||
case(MYSQL_TYPE_SHORT):
|
||||
result.set(atoll(data_ptr));
|
||||
result.set(atoll(raw.c_str()));
|
||||
break;
|
||||
case(MYSQL_TYPE_LONG):
|
||||
result.set(atoll(data_ptr));
|
||||
result.set(atoll(raw.c_str()));
|
||||
break;
|
||||
case(MYSQL_TYPE_INT24):
|
||||
result.set(atoll(data_ptr));
|
||||
result.set(atoll(raw.c_str()));
|
||||
break;
|
||||
case(MYSQL_TYPE_LONGLONG):
|
||||
result.set(atoll(data_ptr));
|
||||
result.set(atoll(raw.c_str()));
|
||||
break;
|
||||
case(MYSQL_TYPE_FLOAT):
|
||||
result.set(atof(data_ptr));
|
||||
result.set(atof(raw.c_str()));
|
||||
break;
|
||||
case(MYSQL_TYPE_DOUBLE):
|
||||
result.set(atof(data_ptr));
|
||||
result.set(atof(raw.c_str()));
|
||||
break;
|
||||
case(MYSQL_TYPE_NULL):
|
||||
break;
|
||||
default:
|
||||
String s;
|
||||
s.assign(data_ptr);
|
||||
result.set(s);
|
||||
result.set(raw);
|
||||
break;
|
||||
}
|
||||
return(result);
|
||||
|
||||
+11
-2
@@ -36,7 +36,7 @@ size_t uce_host_memcache_command(uint64_t sockfd, const char* command, size_t co
|
||||
size_t uce_host_mysql(const char* in, size_t in_len, char* out, size_t cap);
|
||||
size_t uce_host_request_perf(const char* in, size_t in_len, char* out, size_t cap);
|
||||
size_t uce_host_shell_exec(const char* cmd, size_t cmd_len, char* buf, size_t cap);
|
||||
int uce_host_file_open_locked(const char* path, size_t path_len, int open_flags, int lock_type, int create_mode, double wait_timeout_seconds, const char* purpose, size_t purpose_len);
|
||||
int uce_host_file_open_locked(const char* path, size_t path_len, int open_flags, int lock_type, int create_mode, double wait_timeout_seconds, const char* purpose, size_t purpose_len, const char* current, size_t current_len);
|
||||
void uce_host_file_close_locked(int handle);
|
||||
void uce_host_file_release_process_locks(const char* reason, size_t reason_len);
|
||||
size_t uce_host_file_read_locked_fd(int handle, char* buf, size_t cap);
|
||||
@@ -105,9 +105,10 @@ bool file_exists(String path)
|
||||
}
|
||||
int file_open_locked(String file_name, int open_flags, int lock_type, int create_mode, f64 wait_timeout_seconds, String purpose)
|
||||
{
|
||||
String current = wasm_current_unit_file();
|
||||
return(uce_host_file_open_locked(
|
||||
file_name.data(), file_name.size(), open_flags, lock_type, create_mode, wait_timeout_seconds,
|
||||
purpose.data(), purpose.size()
|
||||
purpose.data(), purpose.size(), current.data(), current.size()
|
||||
));
|
||||
}
|
||||
void file_close_locked(int fd) { uce_host_file_close_locked(fd); }
|
||||
@@ -525,6 +526,7 @@ StringMap default_config()
|
||||
#include <fcntl.h>
|
||||
#include <limits.h>
|
||||
#include <sys/file.h>
|
||||
#include <errno.h>
|
||||
#include "sys.h"
|
||||
#include "hash.h"
|
||||
|
||||
@@ -793,6 +795,12 @@ bool file_write_all(int fd, const char* data, size_t remaining)
|
||||
{
|
||||
auto bytes_written = write(fd, data, remaining);
|
||||
if(bytes_written < 0)
|
||||
{
|
||||
if(errno == EINTR)
|
||||
continue;
|
||||
return(false);
|
||||
}
|
||||
if(bytes_written == 0)
|
||||
return(false);
|
||||
data += bytes_written;
|
||||
remaining -= bytes_written;
|
||||
@@ -1009,6 +1017,7 @@ u64 socket_connect(String host, short port)
|
||||
{
|
||||
print("SOCKET ERROR (could not connect to address " + String(host) + ":" + std::to_string(port) + ")\n");
|
||||
perror("SOCKET ERROR ");
|
||||
close(sockfd);
|
||||
return(0);
|
||||
}
|
||||
context->resources.sockets.push_back(sockfd);
|
||||
|
||||
Reference in New Issue
Block a user