Compare commits

..

4 Commits

Author SHA1 Message Date
Igor Shutrov
e72e908c1a ftpd: Simplify console_fs_error logic 2026-03-03 23:44:54 +05:00
Igor Shutrov
2893749afb ftpd: Add function to access filesystem errors by index 2026-02-24 22:24:47 +05:00
Igor Shutrov
c6d82894a0 ftpd: Fix indents 2026-02-24 22:24:12 +05:00
Igor Shutrov
ef5b97d0ca ftpd: Add mkd command 2026-02-23 19:09:14 +05:00
5 changed files with 165 additions and 118 deletions

View File

@@ -1,55 +1,55 @@
Горячие клавиши:
ctrl+A выделить всё
ctrl+C копировать
ctrl+V вставить
ctrl+X вырезать
ctrl+L преобразовать в нижний регистр
ctrl+U преобразовать в верхний регистр
ctrl+F,
ctrl+H показать панель поиска/замены
Esc закрыть панель поиска; закрыть меню
shift+Esc скрыть (свернуть) панель поиска
F10 открыть главное меню
shift+F10 открыть контекстное меню
F3 найти следующий
shift+F3 найти предыдущий
ctrl+Z отменить
ctrl+Y вернуть
ctrl+G перейти на строку...
ctrl+Del удалить строку
ctrl+D дублировать строку
ctrl+Up переместить текст вверх
ctrl+Down переместить текст вниз
ctrl+E выделить слово
Tab увеличить отступ для текста
shift+
Backspace уменьшить отступ для выделенного текста
shift+Tab уменьшить отступ для текста
ctrl+F2 установить/снять метку
F2 перейти к метке ниже
shift+F2 перейти к метке выше
ctrl+S сохранить
ctrl+O открыть
ctrl+N,
ctrl+T создать новый
ctrl+W закрыть файл
ctrl+Tab переключиться на следующую вкладку
ctrl+F9 компилировать
F9 выполнить
ctrl+F8 отладка
shift+wheel горизонтальная прокрутка
перемещение по тексту:
(ctrl+)Home, (ctrl+)End, (ctrl+)PageUp, (ctrl+)PageDown
ctrl+Left, ctrl+Right
перемещение в панели поиска:
Tab к следующему полю ввода
Shift-Tab к предыдущему полю ввода
Enter поиск следующего вхождения
Горячие клавиши:
ctrl+A выделить всё
ctrl+C копировать
ctrl+V вставить
ctrl+X вырезать
ctrl+L преобразовать в нижний регистр
ctrl+U преобразовать в верхний регистр
ctrl+F,
ctrl+H показать панель поиска/замены
Esc закрыть панель поиска; закрыть меню
shift+Esc скрыть (свернуть) панель поиска
F10 открыть главное меню
shift+F10 открыть контекстное меню
F3 найти следующий
shift+F3 найти предыдущий
ctrl+Z отменить
ctrl+Y вернуть
ctrl+G перейти на строку...
ctrl+Del удалить строку
ctrl+D дублировать строку
ctrl+Up переместить текст вверх
ctrl+Down переместить текст вниз
ctrl+E выделить слово
Tab увеличить отступ для выделенного текста
shift+
Backspace уменьшить отступ для выделенного текста
ctrl+F2 установить/снять метку
F2 перейти к метке ниже
shift+F2 перейти к метке выше
ctrl+S сохранить
ctrl+O открыть
ctrl+N,
ctrl+T создать новый
ctrl+W закрыть файл
ctrl+Tab переключиться на следующую вкладку
ctrl+F9 компилировать
F9 выполнить
ctrl+F8 отладка
shift+wheel горизонтальная прокрутка
перемещение по тексту:
(ctrl+)Home, (ctrl+)End, (ctrl+)PageUp, (ctrl+)PageDown
ctrl+Left, ctrl+Right
перемещение в панели поиска:
Tab к следующему полю ввода
Shift-Tab к предыдущему полю ввода
Enter поиск следующего вхождения

View File

@@ -1,55 +0,0 @@
Keyboard Shortcuts:
ctrl+A Select all
ctrl+C Copy
ctrl+V Paste
ctrl+X Cut
ctrl+L Convert to lowercase
ctrl+U Convert to uppercase
ctrl+F,
ctrl+H Show search/replace panel
Esc Close search panel; Close menu
shift+Esc Hide (Minimize) search panel
F10 Open main menu
shift+F10 Open context menu
F3 Find next
shift+F3 Find previous
ctrl+Z Undo
ctrl+Y Redo
ctrl+G Go to line...
ctrl+Del Delete line
ctrl+D Duplicate line
ctrl+Up Move text up
ctrl+Down Move text down
ctrl+E Select word
Tab Increase indent for text
shift+
Backspace Decrease indent for selected text
shift+Tab Decrease indent for text
ctrl+F2 Set/Remove bookmark
F2 Go to next bookmark
shift+F2 Go to previous bookmark
ctrl+S Save
ctrl+O Open
ctrl+N,
ctrl+T Create new
ctrl+W Close File
ctrl+Tab Switch to Next Tab
ctrl+F9 Compile
F9 Run
ctrl+F8 Debug
shift+wheel Horizontal scrolling
Navigating text:
(ctrl+)Home, (ctrl+)End, (ctrl+)PageUp, (ctrl+)PageDown
ctrl+Left, ctrl+Right
Navigating in search panel:
Tab Move to next input field
shift+Tab Move to previous input field
Enter Find next occurrence

View File

@@ -28,7 +28,7 @@ IMPORT
RW, Ini, EB := EditBox, Tabs, Toolbar, SB := StatusBar;
CONST
HEADER = "CEdit (25-jan-2026)";
HEADER = "CEdit (11-jan-2026)";
ShellFilter = "";
EditFilter = "sh|inc|txt|asm|ob07|c|cpp|h|pas|pp|lua|ini|json";
@@ -1575,7 +1575,7 @@ VAR
BEGIN
menu := List.create(NIL);
Menu.AddMenuItem(menu, menuIncInd, "increase Tab");
Menu.AddMenuItem(menu, menuDecInd, "decrease shift-Tab");
Menu.AddMenuItem(menu, menuDecInd, "decrease shift-Bksp");
RETURN Menu.create(menu, mainTID)
END CreateMenuIndent;
@@ -1686,8 +1686,6 @@ BEGIN
ELSE
IF keyCode = -1 THEN
key := -1
ELSIF (keyCode = 15) & shift THEN (* Shift-Tab *)
T.Indent(text, FALSE)
ELSIF keyCode = 61 THEN (* F3 *)
key := -1;
IF search & (searchText # "") THEN
@@ -1757,7 +1755,7 @@ BEGIN
ELSE
SetFocus(ReplaceEdit, TRUE)
END
ELSIF keyCode = 28 THEN (* Enter *)
ELSIF keyCode = 28 THEN (* Enter *)
IF searchOpened & (searchText # "") THEN
notFound := ~T.findNext(text, BKW.value)
END
@@ -1776,7 +1774,7 @@ BEGIN
ELSE
SetFocus(GotoEdit, TRUE)
END
ELSIF keyCode = 28 THEN (* Enter *)
ELSIF keyCode = 28 THEN (* Enter *)
IF searchOpened & (searchText # "") THEN
notFound := ~T.findNext(text, BKW.value)
END

View File

@@ -89,7 +89,7 @@ commands: ; all commands must be in uppercase
; dd 'HELP', login_first, login_first, login_first, cmd_HELP
dd 'LIST', login_first, login_first, login_first, cmdLIST
; dd 'MDTM', login_first, login_first, login_first, cmd_MDTM
; dd 'MKD', login_first, login_first, login_first, cmd_MKD
dd 'MKD', login_first, login_first, login_first, cmd_MKD
; dd 'MODE', login_first, login_first, login_first, cmd_MODE
; dd 'NLST', login_first, login_first, login_first, cmdNLST
dd 'NOOP', login_first, login_first, login_first, cmdNOOP
@@ -333,6 +333,35 @@ open_datasock:
ret
align 4
fs_err_table:
dd str_fs_error2 ; 2
dd str_fs_error3 ; 3
dd str_fs_error ; 4
dd str_fs_error5 ; 5
dd str_fs_error6 ; 6
dd str_fs_error7 ; 7
dd str_fs_error8 ; 8
dd str_fs_error9 ; 9
dd str_fs_error10 ; 10
dd str_fs_error11 ; 11
dd str_fs_error12 ; 12
console_fs_error:
mov edx, 4 ; Unknown filesystem error
cmp eax, 2
jb .print_err
cmp eax, 12
ja .print_err
mov edx, eax
.print_err:
sub edx, 2
mov edx, [fs_err_table + edx*4]
invoke con_write_asciiz, edx
ret
;------------------------------------------------
; "ABOR"
@@ -1248,6 +1277,69 @@ cmdTYPE:
ret
;------------------------------------------------
; "MKD"
;
; Create directory
;
;------------------------------------------------
align 4
cmd_MKD:
test [ebp + thread_data.permissions], PERMISSION_WRITE
jz permission_denied
lea esi, [esi + 4]
lea edi, [ebp + thread_data.buffer]
mov ecx, 1024
.loop1:
lodsb
cmp al, 0x20
jb .done
stosb
loop .loop1
.done:
mov byte [edi], 0x00
call create_path
dec edi
lea esi, [ebp + thread_data.buffer]
.loop2:
lodsb
cmp al, 0x20
jb .new_dir_ready
stosb
loop .loop2
.new_dir_ready:
mov byte [edi], 0x00
lea ebx, [ebp + thread_data.fpath]
invoke con_write_asciiz, ebx
invoke con_write_asciiz, str_newline
; called fs function
push ebx
dec esp
mov byte[esp], 0
push dword 0
push dword 0
push dword 0
push dword 0
push dword SSF_CREATE_FOLDER
mov ebx, esp
mcall SF_FILE
add esp, 6*4 + 1
test eax, eax
jnz .error
sendFTP "257 Directory created"
ret
.error:
call console_fs_error
sendFTP "550 Create directory operation failed."
ret
;------------------------------------------------
; "USER"
;
; Login to the server, step one of two. ;;; TODO: prevent buffer overflow!

View File

@@ -63,13 +63,13 @@ use32
dd params ; parameters
dd path ; path
include '../../KOSfuncs.inc'
include '../../macros.inc'
purge mov,add,sub
include '../../proc32.inc'
include '../../dll.inc'
include '../../struct.inc'
include '../../develop/libraries/libs-dev/libio/libio.inc'
include '../../network.inc'
macro sendFTP str {
@@ -363,6 +363,18 @@ str_alopen db 'Data connection already open.',10,0
str_notfound db 'ERROR: file not found.',10,0
str_sockerr db 'ERROR: socket error.',10,0
str_fs_error db 'Unknown filesystem error',10,0
str_fs_error2 db 'Function not supported for this filesystem',10,0
str_fs_error3 db 'Unknown filesystem',10,0
str_fs_error5 db 'File not found',10,0
str_fs_error6 db 'End of file',10,0
str_fs_error7 db 'Pointer outside application memory',10,0
str_fs_error8 db 'Disk full',10,0
str_fs_error9 db 'Filesystem error',10,0
str_fs_error10 db 'Access denied',10,0
str_fs_error11 db 'Device error',10,0
str_fs_error12 db 'Filesystem out of memory',10,0
str_newline db 10, 0
str_mask db '*', 0
str_infinity db 0xff, 0xff, 0xff, 0xff, 0