)]}'
{"metropolis/node/core/minit/main.c":[{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4d811293eda5fc7531bd389d7a584c882fc5f463","unresolved":true,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"void handle_signal(pid_t child_pid, int signum);"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"#define num_consoles 3"},{"line_number":33,"context_line":"FILE *consoles[num_consoles] \u003d {};"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"// open_consoles populates the consoles array with FILE pointers to opened"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"57a99efa_50c623dc","line":32,"updated":"2022-04-21 07:25:34.000000000","message":"Preprocessor definitions are capitalized by convention.","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"9171bd28661ffecd41b93ab608072f44340b83ae","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"void handle_signal(pid_t child_pid, int signum);"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"#define num_consoles 3"},{"line_number":33,"context_line":"FILE *consoles[num_consoles] \u003d {};"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"// open_consoles populates the consoles array with FILE pointers to opened"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"1ffe47ab_06ed3031","line":32,"in_reply_to":"57a99efa_50c623dc","updated":"2022-04-21 11:18:56.000000000","message":"Done","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4d811293eda5fc7531bd389d7a584c882fc5f463","unresolved":true,"context_lines":[{"line_number":36,"context_line":"// character devices that should receive log messages. Some of these pointers"},{"line_number":37,"context_line":"// are likely to be null, meaning that particular console is not available."},{"line_number":38,"context_line":"void open_consoles() {"},{"line_number":39,"context_line":"    consoles[0] \u003d fopen(\"/dev/console\", \"w\");"},{"line_number":40,"context_line":"    consoles[1] \u003d fopen(\"/dev/tty0\", \"w\");"},{"line_number":41,"context_line":"    consoles[2] \u003d fopen(\"/dev/ttyS0\", \"w\");"},{"line_number":42,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"ebc79006_a6f4084b","line":39,"updated":"2022-04-21 07:25:34.000000000","message":"You\u0027ve got a chance of checking errno upon receiving a NULL pointer from fopen.","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"a8122c2e22ff7c0a516e55168193c98cbb697368","unresolved":false,"context_lines":[{"line_number":36,"context_line":"// character devices that should receive log messages. Some of these pointers"},{"line_number":37,"context_line":"// are likely to be null, meaning that particular console is not available."},{"line_number":38,"context_line":"void open_consoles() {"},{"line_number":39,"context_line":"    consoles[0] \u003d fopen(\"/dev/console\", \"w\");"},{"line_number":40,"context_line":"    consoles[1] \u003d fopen(\"/dev/tty0\", \"w\");"},{"line_number":41,"context_line":"    consoles[2] \u003d fopen(\"/dev/ttyS0\", \"w\");"},{"line_number":42,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"beba42bd_2d48d6ae","line":39,"in_reply_to":"092582b2_f687fb19","updated":"2022-04-21 13:25:40.000000000","message":"I guess not.","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"9171bd28661ffecd41b93ab608072f44340b83ae","unresolved":true,"context_lines":[{"line_number":36,"context_line":"// character devices that should receive log messages. Some of these pointers"},{"line_number":37,"context_line":"// are likely to be null, meaning that particular console is not available."},{"line_number":38,"context_line":"void open_consoles() {"},{"line_number":39,"context_line":"    consoles[0] \u003d fopen(\"/dev/console\", \"w\");"},{"line_number":40,"context_line":"    consoles[1] \u003d fopen(\"/dev/tty0\", \"w\");"},{"line_number":41,"context_line":"    consoles[2] \u003d fopen(\"/dev/ttyS0\", \"w\");"},{"line_number":42,"context_line":"}"}],"source_content_type":"text/x-csrc","patch_set":1,"id":"092582b2_f687fb19","line":39,"in_reply_to":"ebc79006_a6f4084b","updated":"2022-04-21 11:18:56.000000000","message":"Right, but what can/should we even do with that information? We could print information about failing to open console 1 to consoles 2,3..., but is that worth the effort / extra code?","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4d811293eda5fc7531bd389d7a584c882fc5f463","unresolved":true,"context_lines":[{"line_number":37,"context_line":"// are likely to be null, meaning that particular console is not available."},{"line_number":38,"context_line":"void open_consoles() {"},{"line_number":39,"context_line":"    consoles[0] \u003d fopen(\"/dev/console\", \"w\");"},{"line_number":40,"context_line":"    consoles[1] \u003d fopen(\"/dev/tty0\", \"w\");"},{"line_number":41,"context_line":"    consoles[2] \u003d fopen(\"/dev/ttyS0\", \"w\");"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"2a8504a3_5a83eb2a","line":40,"updated":"2022-04-21 07:25:34.000000000","message":"I\u0027ve just read it\u0027s platform dependent, but newly fopen\u0027d files fill generally be *fully buffered*. This means that by fopen-ing /dev/console you\u0027re losing *line uffering* you\u0027re used to.\n\nI believe this can be fixed with these, though I don\u0027t know or remember the exact use: https://www.gnu.org/software/libc/manual/html_node/Controlling-Buffering.html","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"9171bd28661ffecd41b93ab608072f44340b83ae","unresolved":false,"context_lines":[{"line_number":37,"context_line":"// are likely to be null, meaning that particular console is not available."},{"line_number":38,"context_line":"void open_consoles() {"},{"line_number":39,"context_line":"    consoles[0] \u003d fopen(\"/dev/console\", \"w\");"},{"line_number":40,"context_line":"    consoles[1] \u003d fopen(\"/dev/tty0\", \"w\");"},{"line_number":41,"context_line":"    consoles[2] \u003d fopen(\"/dev/ttyS0\", \"w\");"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"90be9b3d_17132377","line":40,"in_reply_to":"073864c6_f6bcff43","updated":"2022-04-21 11:18:56.000000000","message":"I\u0027ll switch this over to line buffering then.","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"336a416c60e86f1e12fc83b944f40c6269f0c9be","unresolved":true,"context_lines":[{"line_number":37,"context_line":"// are likely to be null, meaning that particular console is not available."},{"line_number":38,"context_line":"void open_consoles() {"},{"line_number":39,"context_line":"    consoles[0] \u003d fopen(\"/dev/console\", \"w\");"},{"line_number":40,"context_line":"    consoles[1] \u003d fopen(\"/dev/tty0\", \"w\");"},{"line_number":41,"context_line":"    consoles[2] \u003d fopen(\"/dev/ttyS0\", \"w\");"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""}],"source_content_type":"text/x-csrc","patch_set":1,"id":"073864c6_f6bcff43","line":40,"in_reply_to":"2a8504a3_5a83eb2a","updated":"2022-04-21 07:26:25.000000000","message":"Man, these typos.","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"4d811293eda5fc7531bd389d7a584c882fc5f463","unresolved":true,"context_lines":[{"line_number":38,"context_line":"void open_consoles() {"},{"line_number":39,"context_line":"    consoles[0] \u003d fopen(\"/dev/console\", \"w\");"},{"line_number":40,"context_line":"    consoles[1] \u003d fopen(\"/dev/tty0\", \"w\");"},{"line_number":41,"context_line":"    consoles[2] \u003d fopen(\"/dev/ttyS0\", \"w\");"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"// cprintf emits a format string to all opened consoles."}],"source_content_type":"text/x-csrc","patch_set":1,"id":"802fe172_73ef2e1f","line":41,"updated":"2022-04-21 07:25:34.000000000","message":"Isn\u0027t it that writes to some serial port writes can block, depending on hardware control flow being enabled?\n\nThis might not be a real-life scenario, as I believe flow control is disabled by default on most platforms.","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"},{"author":{"_account_id":1000002,"name":"Serge Bazanski","display_name":"Serge","email":"serge@monogon.tech","username":"serge","avatars":[{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/52c41428b6369f2c02b9717425216f7d.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"9171bd28661ffecd41b93ab608072f44340b83ae","unresolved":true,"context_lines":[{"line_number":38,"context_line":"void open_consoles() {"},{"line_number":39,"context_line":"    consoles[0] \u003d fopen(\"/dev/console\", \"w\");"},{"line_number":40,"context_line":"    consoles[1] \u003d fopen(\"/dev/tty0\", \"w\");"},{"line_number":41,"context_line":"    consoles[2] \u003d fopen(\"/dev/ttyS0\", \"w\");"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"// cprintf emits a format string to all opened consoles."}],"source_content_type":"text/x-csrc","patch_set":1,"id":"a30f206b_594fd020","line":41,"in_reply_to":"802fe172_73ef2e1f","updated":"2022-04-21 11:18:56.000000000","message":"I\u0027m gonna add a TODO on this. I really don\u0027t feel like going into the termios mines to figure out how to disable software and hardware flow control.\n\nAnd yeah, for our current platform (x86/generic PC) I don\u0027t think we\u0027re likely to have this problem.","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"},{"author":{"_account_id":1000010,"name":"Mateusz Zalega","display_name":"msgctl","email":"mateusz@monogon.tech","username":"mateusz","avatars":[{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d32","height":32},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d56","height":56},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d100","height":100},{"url":"https://www.gravatar.com/avatar/30cae8ca0782f23ce0a60ac80fda3dd9.jpg?d\u003didenticon\u0026r\u003dpg\u0026s\u003d120","height":120}]},"change_message_id":"a8122c2e22ff7c0a516e55168193c98cbb697368","unresolved":false,"context_lines":[{"line_number":38,"context_line":"void open_consoles() {"},{"line_number":39,"context_line":"    consoles[0] \u003d fopen(\"/dev/console\", \"w\");"},{"line_number":40,"context_line":"    consoles[1] \u003d fopen(\"/dev/tty0\", \"w\");"},{"line_number":41,"context_line":"    consoles[2] \u003d fopen(\"/dev/ttyS0\", \"w\");"},{"line_number":42,"context_line":"}"},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"// cprintf emits a format string to all opened consoles."}],"source_content_type":"text/x-csrc","patch_set":1,"id":"4819aaac_7525f694","line":41,"in_reply_to":"a30f206b_594fd020","updated":"2022-04-21 13:25:40.000000000","message":"Done","commit_id":"619f36972d3c3ed6040fd8a1647e1e6903fba4c3"}]}
