| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- commit 69839afcf5230388ceb9c88da7ffc6bd3c1c4a0a
- Author: Oliver Fabel <28701799+ofabel@users.noreply.github.com>
- Date: Tue Oct 1 18:31:14 2024 +0200
- library update
- diff --git a/mp_flipper_fileio.c b/mp_flipper_fileio.c
- index 378c2c4ff..6de786ba5 100644
- --- a/mp_flipper_fileio.c
- +++ b/mp_flipper_fileio.c
- @@ -177,9 +177,66 @@ MP_DEFINE_CONST_OBJ_TYPE(
- locals_dict,
- &mp_flipper_file_locals_dict);
-
- +mp_obj_t mp_flipper_builtin_open(size_t n_args, const mp_obj_t* args, mp_map_t* kwargs) {
- + const char* file_name = mp_obj_str_get_str(args[0]);
- +
- + uint8_t access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ;
- + uint8_t open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_EXIST;
- + bool is_text = true;
- +
- + if(n_args > 1) {
- + size_t len;
- +
- + const char* mode = mp_obj_str_get_data(args[1], &len);
- +
- + for(size_t i = 0; i < len; i++) {
- + if(i == 0 && mode[i] == 'r') {
- + access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ;
- + open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_EXIST;
- +
- + continue;
- + }
- +
- + if(i == 0 && mode[i] == 'w') {
- + access_mode = MP_FLIPPER_FILE_ACCESS_MODE_WRITE;
- + open_mode = MP_FLIPPER_FILE_OPEN_MODE_CREATE_ALWAYS;
- +
- + continue;
- + }
- +
- + if(i == 1 && mode[i] == 'b') {
- + is_text = false;
- +
- + continue;
- + }
- +
- + if(i == 1 && mode[i] == 't') {
- + is_text = true;
- +
- + continue;
- + }
- +
- + if(i >= 1 && mode[i] == '+') {
- + access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ | MP_FLIPPER_FILE_ACCESS_MODE_WRITE;
- + open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_APPEND;
- +
- + continue;
- + }
- +
- + mp_raise_OSError(MP_EINVAL);
- + }
- + }
- +
- + void* handle = mp_flipper_file_open(file_name, access_mode, open_mode);
- + void* fd = mp_flipper_file_new_file_descriptor(handle, file_name, access_mode, open_mode, is_text);
- +
- + return MP_OBJ_FROM_PTR(fd);
- +}
- +MP_DEFINE_CONST_FUN_OBJ_KW(mp_flipper_builtin_open_obj, 1, mp_flipper_builtin_open);
- +
- static const mp_rom_map_elem_t mp_module_io_globals_table[] = {
- {MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_io)},
- - {MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mp_builtin_open_obj)},
- + {MP_ROM_QSTR(MP_QSTR_open), MP_ROM_PTR(&mp_flipper_builtin_open_obj)},
- {MP_ROM_QSTR(MP_QSTR_FileIO), MP_ROM_PTR(&mp_flipper_fileio_type)},
- {MP_ROM_QSTR(MP_QSTR_TextIO), MP_ROM_PTR(&mp_flipper_textio_type)},
- };
- diff --git a/mp_flipper_halport.c b/mp_flipper_halport.c
- index 3be95e436..918044496 100644
- --- a/mp_flipper_halport.c
- +++ b/mp_flipper_halport.c
- @@ -9,64 +9,6 @@
- #include "mp_flipper_halport.h"
- #include "mp_flipper_fileio.h"
-
- -mp_obj_t mp_builtin_open(size_t n_args, const mp_obj_t* args, mp_map_t* kwargs) {
- - const char* file_name = mp_obj_str_get_str(args[0]);
- -
- - uint8_t access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ;
- - uint8_t open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_EXIST;
- - bool is_text = true;
- -
- - if(n_args > 1) {
- - size_t len;
- -
- - const char* mode = mp_obj_str_get_data(args[1], &len);
- -
- - for(size_t i = 0; i < len; i++) {
- - if(i == 0 && mode[i] == 'r') {
- - access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ;
- - open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_EXIST;
- -
- - continue;
- - }
- -
- - if(i == 0 && mode[i] == 'w') {
- - access_mode = MP_FLIPPER_FILE_ACCESS_MODE_WRITE;
- - open_mode = MP_FLIPPER_FILE_OPEN_MODE_CREATE_ALWAYS;
- -
- - continue;
- - }
- -
- - if(i == 1 && mode[i] == 'b') {
- - is_text = false;
- -
- - continue;
- - }
- -
- - if(i == 1 && mode[i] == 't') {
- - is_text = true;
- -
- - continue;
- - }
- -
- - if(i >= 1 && mode[i] == '+') {
- - access_mode = MP_FLIPPER_FILE_ACCESS_MODE_READ | MP_FLIPPER_FILE_ACCESS_MODE_WRITE;
- - open_mode = MP_FLIPPER_FILE_OPEN_MODE_OPEN_APPEND;
- -
- - continue;
- - }
- -
- - mp_raise_OSError(MP_EINVAL);
- - }
- - }
- -
- - void* handle = mp_flipper_file_open(file_name, access_mode, open_mode);
- - void* fd = mp_flipper_file_new_file_descriptor(handle, file_name, access_mode, open_mode, is_text);
- -
- - return MP_OBJ_FROM_PTR(fd);
- -}
- -
- -MP_DEFINE_CONST_FUN_OBJ_KW(mp_builtin_open_obj, 1, mp_builtin_open);
- -
- void mp_hal_stdout_tx_str(const char* str) {
- mp_flipper_stdout_tx_str(str);
- }
|