Advanced System Programming

By Suntae Hwang

Fall Semester

Homework #1

BBS 개요 를 읽고 다음의 명령어를 완성하시오.

1. WRITE
2. DELETE

WRITE 동작
WRITE 명령은 게시판에 글을 쓰는 행위이다. 아직은 게시판이 모두 완성되지 않았다. 따라서 게시판에 직접이동하여 명령을 내려야한다.

  동작설명

1. article.index 파일이 있는 곳에서 실행해야한다. 
    current directory를 이용해서 프로그램을 작성해야 한다.
2. article.index 에서 다음 글 번호를 읽어서 파일명을 글번호로 한다.
3. 입력받은 내용은 BBS 개요에서 정한 Article 파일 형식을 따라서 저장해야 한다.
    현재 글쓴이를 알 수 있는 방법을 배우지 않았음으로, 우선은 다음의 함수를 만들어서 사용한다.

    char* get_writer() {
        return  "홍길동";
    }
    
    위 함수의 구현은 추후에 사용자 관련 함수를 이용하여 변경될 수 있다.
4. article.index 파일의 내용을 수정한다.
    다음 사용할 글 번호의 수를 하나 증가시켜야 한다.
    등록된 글의 개수를 증가시켜야 한다.
    새로 쓴 글의 내용중, 글 번호와, 글 제목, 게시자 이름, 그리고 첨부파일 개수를 한줄에 하나씩 입력해야 한다.
    첨부파일은 아직 없음으로, 0으로 다룬다.
  
  실행예시

*  전제 조건: 해당 BBS의 게시판에 직접 방문해서 실행해야 한다.

   ------------------------------------------------------------------------------------------------------------------------------------------------
   [u20121234@linux 1]$ write
   제목: 제 1 강 File
   내용을 입력하세요. 입력을 종료하려면 마지막 줄에 마침표(.)를 입력하고 엔터(Enter)키를 누르세요.
   제 1 강 FILE
   (중략)...
   .
   ------------------------------------------------------------------------------------------------------------------------------------------------
   위의 예시에서 빨간색으로 표시된 글은 사용자가 입력한 것이다.


DELETE 동작
DELETE 명령은 게시판에 쓴 글을 삭제하는 행위이다.

  동작설명

1. article.index 파일이 있는 곳에서 실행해야한다. 
    current directory를 이용해서 프로그램을 작성해야 한다.
2. 삭제할 글번호에 해당하는 글이 있어야 한다.
3. 글의 쓴 사용자와 현재 사용자(get_writer)가 다를 경우 삭제할 수 없다는 메시지를 출력하고 종료해야 한다.
4. article.index 파일의 내용을 수정한다.
    등록된 글의 개수를 감소시켜야 한다.
    article.index에서 해당하는 글번호를 찾아서 글번호 앞에 D를 덮어쓴다.
    예시
    D3                  //13번 글일 경우
    제 13 강. 스레드
    황선태
    0
  
  실행예시

*  전제 조건: 해당 BBS의 게시판에 직접 방문해서 실행해야 한다.

   ------------------------------------------------------------------------------------------------------------------------------------------------
   [u20121234@linux 1]$ delete 1
   삭제한 글은 복구할 수 없습니다. 계속하시겠습니까(Y/N)? Y
   1번글이 삭제되었습니다.
   ------------------------------------------------------------------------------------------------------------------------------------------------
   ------------------------------------------------------------------------------------------------------------------------------------------------
   [u20121234@linux 1]$ delete 2
   다른 사용자가 작성한 글은 삭제할 수 없습니다.
   ------------------------------------------------------------------------------------------------------------------------------------------------
   ------------------------------------------------------------------------------------------------------------------------------------------------
   [u20121234@linux 1]$ delete 3
   해당글이 존재하지 않습니다.
   ------------------------------------------------------------------------------------------------------------------------------------------------

   위의 예시에서 빨간색으로 표시된 글은 사용자가 입력한 것이다.