MCPcopy Create free account
hub / github.com/crownengine/crown / write_port_file

Function write_port_file

src/device/console_server.cpp:41–82  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39 };
40
41 static bool write_port_file(FilesystemDisk &fs, const char *file, u16 port)
42 {
43 CE_ASSERT(file != NULL, "Port file must be != NULL");
44
45 TempAllocator1024 ta;
46 DynamicString tmp_file(ta);
47 tmp_file += file;
48 tmp_file += ".tmp";
49
50 StringStream ss(ta);
51 ss << port << "\n";
52 const char *port_str = string_stream::c_str(ss);
53 const u32 port_str_len = strlen32(port_str);
54
55 File *fp = fs.open(tmp_file.c_str(), FileOpenMode::WRITE);
56 if (!fp->is_open()) {
57 fs.close(*fp);
58 loge(CONSOLE_SERVER, "Could not open port file `%s`", tmp_file.c_str());
59 return false;
60 }
61
62 if (fp->write(port_str, port_str_len) != port_str_len) {
63 fs.close(*fp);
64 fs.delete_file(tmp_file.c_str());
65 loge(CONSOLE_SERVER, "Could not write port file `%s`", tmp_file.c_str());
66 return false;
67 }
68
69 fs.close(*fp);
70
71 const RenameResult rr = fs.rename(tmp_file.c_str(), file);
72 if (rr.error != RenameResult::SUCCESS) {
73 fs.delete_file(tmp_file.c_str());
74 loge(CONSOLE_SERVER, "Could not rename port file `%s` -> `%s`"
75 , tmp_file.c_str()
76 , file
77 );
78 return false;
79 }
80
81 return true;
82 }
83
84 static AutoBindResult bind_auto_port(u16 *port, ConsoleServer &cs)
85 {

Callers 1

listenMethod · 0.85

Calls 7

openMethod · 0.45
c_strMethod · 0.45
is_openMethod · 0.45
closeMethod · 0.45
writeMethod · 0.45
delete_fileMethod · 0.45
renameMethod · 0.45

Tested by

no test coverage detected