crownyc VM 입력() opcode 근본 수정 + 회원관리 라이브러리
crownyc VM 입력() opcode 근본 수정 + 회원관리 라이브러리
개요
crownyc VM의 `입력()` 프리미티브가 `scanf("%ld")`로 **숫자만** 받도록 구현되어 있어, 모든 대화형 한선씨 프로그램이 동작 불가였음. 문자열 한 줄 입력 + 다중 호출 안전 구현으로 근본 수정. 회원관리 라이브러리 및 터미널 CLI도 병행 작성.무엇을 했는지
1. VM 입력() opcode 근본 수정 (핵심)
**이전** (`crownyc.c:4561-4563`):
case 325: /* INPUT — 숫자 입력 */
{ long v; if (scanf("%ld", &v) == 1) push(int_to_cube(v)); }
break;
**이후** (`crownyc.c:4561-4571`):
case 325: /* INPUT — 한 줄 문자열 입력 (EOF/실패 시 빈 문자열) */
{ char buf[4096];
if (fgets(buf, sizeof(buf), stdin)) {
int len = (int)strlen(buf);
while (len > 0 && (buf[len-1]=='\n' || buf[len-1]=='\r')) buf[--len] = 0;
push(int_to_cube(str_new(buf, len)));
} else push(int_to_cube(str_new("", 0)));
}
break;
**영향 범위**: 모든 대화형 한선씨 프로그램 해금 (REPL/CLI/인증/서버 등 24개 표준 라이브러리 전체)
**검증**:
- `/tmp/입력다중.한선` — 3회 연속 호출 모두 정상 (첫줄/둘째줄/셋째줄)
- 회원터미널 메뉴 네비게이션 정상 동작
2. 회원관리 라이브러리
**파일**: `libs/회원관리.한선` 기능:- 회원 CRUD (등록/조회/인증)
- 서비스 계정 관리 (다중 서비스 자격증명)
- 권한 관리 (슈퍼/관리/쓰기/읽기/없음)
- 지갑 (입금/출금/이체)
- 뱅크 계좌 (등급별)
- 스탁옵션 (4상 상태)
- DEX (거래 기록)
- 감사 로그
- 이전: `["성공", "참", ...]` (배열)
- 이후: `맵생성() → 맵넣어(...)` 로 통일
3. 회원터미널 CLI
**파일**: `libs/회원터미널.한선` 11개 메뉴 대화형 CLI. 모든 `입력()` 호출을 `문자열변환(입력())` 로 래핑 (24곳).관련 파일 경로
- `/Users/ef/CrownyOS/crownyc/crownyc.c:4561` — VM 입력 opcode
- `/Users/ef/CrownyOS/crownyc/libs/회원관리.한선` — 회원관리 라이브러리
- `/Users/ef/CrownyOS/crownyc/libs/회원터미널.한선` — 대화형 CLI
- `/tmp/입력다중.한선` — VM 회귀 테스트