'C'에 해당되는 글 27건

  1. 2007.05.25 Mpd 싱크 가사....... 프로그램 (8)
  2. 2007.05.11 간단한 양방향 linkedlist (6)
  3. 2007.05.06 c언어로 구현한 mp3 태그(id3v2) 지우기 (6)
  4. 2007.04.09 pointer 를 call by referance 하기 (6)
  5. 2007.03.30 g_signal_connect의 폐해? (4)

Mpd 싱크 가사....... 프로그램

이딴거 올려봤자 별루 보는사람도 얼마 없겠지만뭐.........

두번째 프로젝트(?) 인 주2>MPD 용 싱크가사 프로그램을 대충~ 완성했다.........

일단 되는 기능은 잘 된다.... 내부적으로 고칠건 좀 있는데....... 안그래도 잘 작동하는데 고치기는

귀찮고 해서 현재 놀면서 방치중~~~ 귀차나~ 귀차나~ 어디 딴짓이나 해볼까~ 하고 있는.............

이거에 대해서 간단히 설명하자면 원래 랜덤여신님이 만든 주3>amarok-live-lyrics

가 있는데.. 그 프로그램에 서버로부터 가져오는 주소값만 살짝 내 프로그램으로 받게 해서 만든것!

사실 "구태여 이렇게 따로 프로그램을 만들지 않더라도"

저 amarok-live-lyrics의 내용만 약간 바꾸면 (주4>dcop 대신 주5>mpc를 써서 한다던가............)

mpd용으로 사용할수 있건만............ 만들어본,........

주6> conky에서 주7>파이썬 안써보고 프로그램 만들어보려고요...

 또.......어짜피 배우는 입장이기도 하고........ ,c언어 예/복습도 할겸................ )

대략 프로그램 구조가......

mp3파일을 읽어 망할놈의 태그 를 건너뛴 만큼 읽는 위치를 이동한다

-> 일정부분을 읽어서 md5 Hash(?) 한다

-> md5한 값을 바로슬 서버의 주소와 합쳐서  -> 주8>소켓써서 서버로부터 페이지를 받아온다

-> 새로운 가사 파일에 그 내용을 저장한다 -> 저장한 내용을 불러와서 메모리에 저장

-> 가사/시간 분리 -> 링크드리스트로 정리 -> 타이머써서 -> (시간에 맞춰) 출력하기.....

-> 에러있음 break -> 그리고 쭉~ 반복~.

아직 주9>터미널 전용(!) 프로그램이라 사용자 인터페이스는 정말 할말이 없다

(이부분에서만 보면 완존 쓰레기다 ; 그래서 주10>공개를 못하겠어용 ㅜ)

아직은 계획이 없지만... 뭐 필요하면 Gtk용 프로글햄으로 바꿀 생각도 있긴한데 귀차나서...

하지만! amarok-live-lyrics 보다 좋은건 딱 하나있다...... 주11> mutagen

을 쓰지않고 자체적으로 mp3파일을 분석해서 태그를 무시하기때문에.. 싱크가사 인식성공률이

amarok-live-lyrics보다 높다..........는거 정도...

(amarok-live-lyrics는 서버에 가사가 있는데도 불구하고 태그위치를 제대로  감지를 못해서

md5값을  잘못얻어오는 경우가 몇몇 mp3파일에서 발견되었었다........

모르겠다 요즘에 버젼업 되어서 고쳐졌는지...... )

주1>지워졌다 ㅋㅋ.

주2>MPD : Music Player Demon 일겁니다.. 내기억으로는.. 데몬이기때문에 재부팅을하거나
일부로 종료시키지 않은한 음악이 멈추질 않죠! 저는 가끔씩 X 를 재시작하는데 그때 음악이 끈겨서
참 안타까웠던차 이프로그램을 jazzbug님의 추천으로 사용하게 되었죠.......
괜찮네요.. 좋아요...근데 지원되는 파일 포맷이 mp3,ogg정도 밖에 없는게 단점..
망할 wma는 재생이 안돼ㅜㅜㅜㅜㅜㅜ

주3>amarok-live-lyrics 
랜덤여신님이 만든 live-lyrics 다음 링크를 참조해주세요.
http://barosl.com/blog/entry/amarok-live-lyrics

주4>dcop :amarok이 이거 쓰던데...... 이거쓰면 amarok이 플레이중인 시간,전체시간,곡이름등을 알수 있다
dcop amarok default 뭐시기.. 이런식으로 썻던거 같은데.. 지금 amarok을 실행시키고 있다면 함
해보시길어플의 상태를 알수 있게 해주는 뭐 그런 녀석인가부다......... 더이상은 모르겠삼..
gtk어플(?) 쪽에도 이런게 있던거 같긴함.

주5>mpc : Music Player Client 인가.. 그래요..

주7> conky
에서 주8>파이썬(python) 이가 메모리 젤많이 먹는거 보면 기분이 상당이 뭐하다(?) 그래서 파이썬
안쓰고 만들려다보니......

주8>소켓 : 이녀석도 기억이 안나서 혼자서 만들다가 몰라서 걍 소스 보고 몇줄 복사붙여넣기 했어요 ㅜㅜ

주9>터미널 전용(!) 프로그램 : 아시려나 모르겠지만 본인은 터미널 프로그램을 매우 사랑! 스러워한다..

주10>공개를 못하겠어용 ㅜ
그리고 우리나라에서 MPD를 쓰는 사람이 몇이나되겠으며( 아니 아는 사람이나 몇이나 될까! )
, 호좁한 인터페이스를 가진 이 터미널 프로그램을 쓸사람은 몇이나 되겠으며......
그래서 공개를 못하겠어욤...

주11> mutagen
파이썬 라이브러리라...물론 이 플그램은 C언어니까 쓸수 없기도 했고 또 c언어용 태그 라이브러리(id3lib인가?)가 존재는 하나 파일을 복사해놓고 거기서 다시 태그를 읽어오고 해야했기 때문에 비효울적인거 같기도 하고(mutagen을 쓴 amarok-live-lyrics도 그렇다..) 
사실 뻘짓할 시간이 아까우니 원래 이런 라이브러리를 쓰는게 이익이겠지만...
공부도 함 해볼겸해서  걍 내가 뻘짓해가면서 만듦
Trackback 0 Comment 8
  1. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2007.05.25 19:14 address edit & del reply

    크흐흐흐흐 역시 천재님은 놀고계신게 아니셨군요 >_<

    전 이제 linkedlist를 이용한 Stack구현으로 인해 어지러울 지경이랍니다. -0-

    • lowid 2007.05.30 11:57 address edit & del

      제것도 좀 문제가 있는거 같아요..
      링크리스트 연결이 문제인지 자꾸 짤린다는거 ㅜ.
      왜이런지........

  2. Favicon of http://sakuragi.org BlogIcon sakuragi 2007.05.27 00:53 address edit & del reply

    저도 요즘은 Amarok 이고 뭐고 다 때려치고 그냥 Audacious 쓴다는...

    • lowid 2007.05.30 11:58 address edit & del

      audacious 가볍고 좋더군요(적어도 Amarok 보단!)
      그래도 벌써 mpd로 정착해 버린후라서 >_<

  3. Favicon of http://oseb.egloos.com BlogIcon oseb 2007.05.28 12:41 address edit & del reply

    "우리나라에서 MPD를 쓰는 사람이 몇이나되겠으며..."
    버럭! 즐겨쓰고 있는 놈인데... 요즘 유행이지 않나요?

    • lowid 2007.05.30 11:59 address edit & del

      oseb님도 MPD를 쓰시다뉩~
      흠..유행이였군요 몰랐어요.,.. );
      그래도 리눅스 자체를 쓴다는게 좀 마이너 하니까요..

  4. Favicon of https://lsm1987.tistory.com BlogIcon 에그 2007.06.15 18:39 신고 address edit & del reply

    알아들을 수 없다!! 비참하군 OTL ;ㅁ;

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2007.06.16 23:07 신고 address edit & del

      리눅스 사용자가 아니라면뭐 알아볼수 없는게
      그다지 이상한것도 아닌걸뭘...
      그리고 군대에서나마 배우는게 있지않아?

간단한 양방향 linkedlist

 
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3
 4 struct node
 5 {
 6     struct node *backward;
 7     int data;
 8     struct node *forward;
 9 };
10
11 struct node* create_node(int i)
12 {
13     struct node *new_node          = NULL;
14     static struct node *old_node   = NULL;
15
16     new_node = (struct node *)malloc(sizeof(struct node) * 1);
17
18     new_node -> backward     = old_node;
19     new_node -> data            = i;
20     new_node -> forward        = NULL;
21
22     /* 첫번째 노드가 아니라면 전노드가 있는 곳의 주소를 준다 */
23     if(old_node != NULL)
24         old_node -> forward = new_node;
25
26     old_node = new_node;
27
28     return new_node;
29 }
30
31 /*me_free <= Header*/
32 void free_node(struct node *me_free)
33 {
34     while(me_free -> forward != NULL){
35         me_free = me_free -> forward;
36         free(me_free -> backward);
37     }
38
39     free(me_free);
40 }
41
42 int main(void)
43 {
44     struct node *head  = NULL;
45
46     head = create_node(1);
47     create_node(2);
48     create_node(3);
49     create_node(4);
50
51     printf("node 1 : %d\n",head -> data);
52     printf("node 2 : %d\n",head -> forward -> data);
53     printf("node 3 : %d\n",head -> forward -> forward -> data);
54     printf("node 4 : %d\n",head -> forward -> forward -> forward -> data);
55     printf("moving : %d\n",head -> forward -> backward -> data);
56
57     free_node(head);
58
59     return 0;
60 }

간단한 linkedlist 당장 쓸때가 있어서

"아무것도 안보고 스스로 처음" 으로 만들어 봣다...

1년반전만해도 linkedlist짜는데 못짜가지고 막 배껴가갔던게 생각이 나네 ㅋㅋ

뭐 암튼간데  잘 작동하는듯하는데.. 글쎄 확실힌 모르겠다..

뭐낙 실수가 많아서..

일단 memory-leak은 안생기는거 같지만....

뭐누군가가 구글링을 하거나 해서 학교 숙제 도움이나 될까..

뭐 틀리다고 해도 내책임은 없다,.. =3 (이블로그에있는 모든 자료가 마찬가지!)

--07-5-12-1시 30분 더 알아보기 쉽게 수정--
Trackback 0 Comment 6
  1. Favicon of http://sakuragi.org BlogIcon sakuragi 2007.05.11 22:31 address edit & del reply

    전 아직도 '아무것도 안보고 스스로' 링키드 리스트 못짜요. 항상 보고 짠답니다. -_-;;;

    • lowid 2007.05.11 22:57 address edit & del

      에이 거짓말~
      다익스트라 알고리즘도 짜시면서 >_<

  2. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2007.05.13 10:59 address edit & del reply

    훠~ 천재;;;;
    저는 언제나 이론만 배우고 머리에 익혀서(암기해서 -_-) 직접 구현할줄은 전혀 모르는 ㅡㅜ

    덧붙이는 글)
    노란색이 너무 밝아서 무슨 글자인지 인식이 잘안되옵나이다 ^^;;;

    • lowid 2007.05.14 01:30 address edit & del

      다들 왜 그러세여 -_-;
      암기도 돼면 직접 구현도 되겠져멀...
      덧> 박스 색깔이 어중간해서 ㅜ 따른색으로 바꿔볼께요.

  3. san 2007.05.24 02:41 address edit & del reply

    테마바꿨네요 산뜻 ㅇㅅㅇ

    • lowid 2007.05.25 17:56 address edit & del

      테마는 저번게 이상한거 같아서 새롭게 바꿔봤어요..
      다른거 또 좋은거 나오면 그것으로 또 옮겨갈까
      생각중이기도 하고 ~

c언어로 구현한 mp3 태그(id3v2) 지우기

 지금 삽질하면서 만들고 있는 프로그램이 mp3 태그를 건들여야 할 일이 있어서
id3lib인가 암튼 mp3태그를 건드리는 라이브러리를 썻었는데 그놈아는 자꾸 써먹다보니까 너무 잘 꺼졋다!!!
더 정확하기 말하자면 에러메세지를 좍 뿌리고 죽어버리는 현상이 발생해서 걍 내가 하나 만들어 버렸다..

mp3 파일의 헤더를 읽어서 태그 전체의 크기를 알아낸다
저 쉬프트 연산만 빼면 그다지 어렵지 않은 코드.. 뭐 반복문이나 재귀어떻게 잘 쓰면 짧게 할수도 있을거
같긴한데.. 뭐 얼만큼 길다고.. 겨우 4byte밖에 안되기에 걍 저리 적었다..
그리고..내가좀 멍청해서 도우지 저런식으로 시프트,or연산을 써서밖에 못 나타나겠다...;;
이것에 대해서 잘 아시는분은 댓글 달아주셔도 감사!

모든 mp3파일 에 다 되는건 아니고 "거의 대부분" 이 된다..
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <unistd.h>
 4 #include <fcntl.h>
 5
 6 int main(int argc,char *argv[])
 7 {
 8     int fd;
 9     char buf[10] = {0};
10     int ok = 0;
11
12     if(argc != 2){
13         printf("Usage : %s filename.mp3\n",argv[0]);
14         exit(1);
15     }
16
17     if((fd = open(argv[1],O_RDONLY)) == -1){
18         perror("File Open ERROR");
19         exit(1);
20     }
21
22     /*헤더(10byte)를 읽어온다*/
23     if(read(fd,buf,10) == -1){
24         perror("File Read ERROR");
25         exit(1);
26     }
27
28     if(!(buf[0] == 'I' &&
29         buf[1] == 'D' &&
30         buf[2] == '3')){
31         fprintf(stderr,"mp3 파일이 아니거나 ID3v2 태그를 가진 파일이 아닙니다\n");
32         exit(1);
33     }
34
35     printf("mp3 file : %x %x %x %x\n",buf[6],buf[7],buf[8],buf[9]);
36
37     ok = ((((buf[6] << 21) | buf[7] << 14) | buf[8] << 7) | buf[9]) + 10;
38
39     printf("ID3 태그를 제외한 파일 시작: %x\n",ok);
40 
41     return 0;
42  }
음 일단 애러 처리는 다 해두긴 했는데... 무슨 에러가 있어도 난 책임 안짐 =3=3
그리고 영어 문법에 딴지 걸지 말자 나 작문할줄도 모른다구 ㅜㅜ
그리고 mp3파일 10개정도만 테스트 해봤는데 잘되는............

덧>
:so $VIMRUNTIME/syntax/2html.vim
이렇게 하면 html문서로 저장이 되는군!
알긴 알았지만 이렇게 직접 블로그에 써먹기는 처음..

mp3태그 분석에 대해선 다음 링크를 참조하자
http://www.byungju.com/wiki/wiki.pl?ID3#_1
아니면 kldp에서 번역된 RFC문서를 참고 하셔도 좋으실듯 싶다..

들어오셔서 글을 보셧다면
제발 댓글좀 달아주셈 ㅜㅜ

앗 버그있다..

Trackback 0 Comment 6
  1. Favicon of http://sakuragi.org BlogIcon sakuragi 2007.05.06 16:25 address edit & del reply

    오홍.. 소스를 이쁘게 html 로 바꾸는 건 저도 좀 가져 가야 겠군요. :D

    • lowid 2007.05.07 16:31 address edit & del

      확실히 소스가 색깔느니깐 이쁘네여. 다시봐두..
      가져가세요~

  2. 환상경 2007.05.07 10:44 address edit & del reply

    이런 천재님 !!!!!

    덧붙이는글) 소스 하이라이팅 되게 포스팅하는거 어떻게 하신거에요?
    덧붙이는글1) 덧글은 매번 남기는데요 -_-
    덧붙이는글2) 태그 멋지군요 -_- 망할놈의 id3v2태그 죽어라 !!! 라니요 ㅋㅋㅋ

    • lowid 2007.05.07 16:33 address edit & del

      vi에서 html로 소스 바꾸는 걸루 html태그들을
      복사해서 테터 편집할때 html모드로 바꿔서 붙여넣기 한거에요.
      이런 마이너한 블로그에 매번 덧글 남겨줘서 고마워요~

  3. san 2007.05.08 02:44 address edit & del reply

    와~ 잘보고 가요 ^^

    • lowid 2007.05.08 21:10 address edit & del

      이번 변방에서 까지 행차해주셔서 감사 !
      꾸벅.

pointer 를 call by referance 하기

  1 #include<stdio.h>
  2 #include<malloc.h>
  3
  4 struct choco
  5 {
  6     int a;
  7     int b;
  8     int c;
  9 };
 10
 11 void me(struct choco* *fk)  //main에서 void(?) 넘긴걸 "struct choco *" 형으로 받는다
 12 {
 13     struct choco *abc;
 14     int i;
 15
 16     printf("func call value : %p\n",*fk);
 17     printf("func call momory address : %p \n",fk);
 18      //이 함수가 끝나더라고 malloc의 메모리는 해제되지 않는다..
 19     abc=(struct choco *)malloc(sizeof(struct choco)*3);
 20
 21     abc[0].a=1;
 22     abc[0].b=2;
 23     abc[0].c=3;
 24
 25     abc[1].a=11;
 26     abc[1].b=22;
 27     abc[1].c=33;
 28
 29     abc[2].a=111;
 30     abc[2].b=222;
 31     abc[2].c=333;
 32
 33     for(i=0;i<3;i++)
 34         printf("func pointer memory (struct) value %d : %d %d %d \n",i,abc[i].a,abc[i].b,abc[i].c);
 35
 36     puts("\n");
 37   
 38     *fk=abc; //이게좀 했갈렸다..
 39 }
 40
 41 int main(void)
 42 {
 43     struct choco *po;
 44     int i;
 45
 46     po=NULL;
 47
 48     printf("Before pointer value : %p \n",po);
 49     printf("Before pointer memory address : %p\n",&po);
 50     puts("\n");
 51    
 52     me(&po);    // void로 값을 넘긴다
 53    
 54     printf("After pointer value : %p \n",po); //요값은 아까 struct choco  *abc의 값!
 55
 56     for(i=0;i<3;i++) //당연히 free되지 않았으므로.. .가능 .. 값을 뿌려줌..
 57         printf("After pointer memory (struct) value %d : %d %d %d \n",i,po[i].a,po[i].b,po[i].c);
 58     puts("\n");
 59
 60     //free가 제대로 앙대 ㅜㅜ(일단 패스)
 61     free(po);
 62
 63     return 0;
 64 }

결과
Before pointer value : (nil)
Before pointer memory address : 0xbff28ac8


func call value : (nil)
func call momory address : 0xbff28ac8
func pointer memory (struct) value 0 : 1 2 3
func pointer memory (struct) value 1 : 11 22 33
func pointer memory (struct) value 2 : 111 222 333


After pointer value : 0x804a008
After pointer memory (struct) value 0 : 1 2 3
After pointer memory (struct) value 1 : 11 22 33
After pointer memory (struct) value 2 : 111 222 333



:cw
Press ENTER or type command to continue

더 간단 버전.. 즉 앞에한짓은 뻘짓이라는게 증명됨(??)
  1 #include<stdio.h>
  2 #include<malloc.h>
  3
  4 truct choco
  5 {
  6     int a;
  7     int b;
  8     int c;
  9 }; 
 10
 11 struct choco* me(void)
 12 {
 13     struct choco *abc;
 14     int i;
 15    
 16     abc=(struct choco *)malloc(sizeof(struct choco)*3);
 17    
 18     abc[0].a=1;
 19     abc[0].b=2;
 20     abc[0].c=3;
 21    
 22     abc[1].a=11;
 23     abc[1].b=22;
 24     abc[1].c=33;
 25
 26     abc[2].a=111;
 27     abc[2].b=222;
 28     abc[2].c=333;
 29
 30     for(i=0;i<3;i++)
 31         printf("func pointer memory (struct) value %d : %d %d %d \n",i,abc[i].a,abc[i].b,abc[i].c);
 32        
 33     puts("\n");
 34   
 35     return abc;
 36 }  
 37
 38 int main(void)
 39 {
 40     struct choco *po;
 41     int i;
 42    
 43     po=NULL;
 44    
 45     printf("Before pointer value : %p \n",po);
 46     printf("Before pointer memory address : %p\n",&po);
 47     puts("\n");
 48    
 49     po=me();
 50    
 51     printf("After pointer value : %p \n",po);
 52    
 53     for(i=0;i<3;i++)
 54         printf("After pointer memory (struct) value %d : %d %d %d \n",i,po[i].a,po[i].b,po[i].c);
 55     puts("\n");
 56    
 57     free(po);
 58 }  

어짜피 malloc은 static과 같이 값이 유지되므로 결론적으로
"값만 받아내면 된다" 그래서 사용하는것도 같이 사용..

내가 free를 많이 안해봐서 몰랐는데
구조체 포인터라고 할지라도 그냥 free하고 포인터네임만 쓰면 되는거 같다(위엔,1차원이므로)
그런데 신기하게도(?) free한다음 for문을 돌려서 안에 내용을 확인하면 포인터 네임 위치만 NULL
이 되어있고 나머지 값들은 다 유지한 상태로 되있다 -_-;
딴 프로그램에서도 이런식으로  free를 했길래 위에 free방법이 틀리지 않은거 같은데..
값은 아니네.. 이상함..;;

4,19일 수정
Trackback 0 Comment 6
  1. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2007.04.10 14:39 address edit & del reply

    천재~!!!

    malloc로 선언했다고 하더라도 함수벗어나면 못쓰게 되는거라 생각했었는데
    아니었었나보군요 -0-
    알면알수록 어려운 C.............

    • lowid 2007.04.11 17:18 address edit & del

      거봐염 쓸수 있잖아요 ~ =3

      하지만 귀찮은건 역시 free해주기..
      (뭐 자동으로 해준다고는 하지만 .그래도..)

  2. Favicon of http://sakuragi.org BlogIcon sakuragi 2007.04.14 17:51 address edit & del reply

    저도 그 free 부분에서 궁금한게.. main 함수가 아닌
    int** func(int **a)
    같은 함수 내부에서 int **b 형태도 선언해서 malloc으로 메모리 할당 한 후에
    그 b를 return 해 버린다면 free 할 기회가 없어진다고 생각 되는데 이때는 어떻게 해야 되는 거죠?
    return 을 받은 녀석을 int **c 라고 가정하면 c 를 free 하면 해결되는 걸까요? -_-;;
    뭐.. 자동으로 해준다고는 하지만요.. 뭔가... ㅜㅡ

    • lowid 2007.04.19 18:22 address edit & del

      걍포인터던 이중포인터던 어짜피 malloc하면 힙(영역이던가?)
      영역에 데이터가 생성(메모리 유지)되므로 값만 받아서 free시켜주면 될듯합니다..
      즉 받아서 (2중포인터로 받았다면)main함수에서 2중포인터 free해주듯이 그func함수에서 리턴받은 값도 마찬가지로 처리하면 될거 같아요..;;(결론적으로 sakuragi님 말대로 될거 같다는)
      (틀릴수도 있으니깐 너무 믿진마시고; )
      덧>다시 작성한 위글이 도움이 될지도.

  3. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2007.04.16 08:50 address edit & del reply

    garbage collector 최고 ~
    포인터 훼~
    물러가라 포인터~

    • lowid 2007.04.19 00:41 address edit & del

      타도! 포인터!
      (하지만 쓸수 밖에 없다는 orz..)

g_signal_connect의 폐해?

왜그런진 모르겠으나..

이상하게 gtk  signal을 연결해줄때 쓰는 함수

g_signal_connect 힘수 (또는 그 외에도 많지만은..)

이상하게 인자를 하나만 받아들이게 되어있어서

결국엔 구조체를 만든다음 한꺼번에 인자하나로 넘겨줄수 밖에 없는데

그러다보니...

/*header*/
59 struct st_quit
60 {
61     GtkWidget *window;
62     GtkWidget *terminal;
63     int terminal_number;
64     int *S_term;
65 };

/*main*/
 25     static struct st_quit Quit_Data[TERM_LIMIT];
30     static int terminal_onoff[TERM_LIMIT];  
51     Quit_Data[terminal_num].S_term=terminal_onoff;

/*func*/
  8     //혹시 함수 잘못 불러올까봐서 ...;                                                                
  9     if(G_st->S_term[G_st->terminal_number]==ON){                                               
 10         //받은 위젯 파괴, 그리고 플래그 OFF시킴
 11         gtk_widget_destroy(G_st->window);
 12         G_st->S_term[G_st->terminal_number]=OFF;    
 13     } 
                          
if(G_st->S_term[G_st->terminal_number]==ON)
라는 복잡한놈으로 변한다..

와 gtk 함수들은(일부?) 는 인자를 여러게 받게 안만들어 놨을까..?

(함수의 갯수가 유한하지만(8개였나??) 그래도 좀 많이 만들어 놓지 불편하잖아..)

이거...한 한달만 안보고 있다가 이거 보면 과연 내가 짜논거 제대로 이해나 할수 있을런지 모르겠다 -_-a

뭐 어쩔수 업지멀.. 호좁이라 이정도 밖에 머리를 못쓰겠는걸,.
(그렇다고 전역변수 쓰기도 그렇고........).
Trackback 0 Comment 4
  1. Favicon of http://khmirage.tistory.com BlogIcon 환상경 2007.03.30 19:36 신고 address edit & del reply

    우어 이 굇수아저씨 또 알수없는 소리만 잔뜩 ~_~
    그나저나 저는 언제쯤에나 GUI 해보려나요;;;;
    이번 top 프로젝트(응?)도 역시 CLI 아흑 ㅠ.ㅠ

    • Favicon of https://lowid.tistory.com BlogIcon Lowid 2007.03.31 18:06 신고 address edit & del

      간단하네요!
      GUI용 TOP를 만드시는겁니다!
      그냥 리눅스 삽질! 정신으로
      그냥 구글링하고 irc에서 물어보고 그러면 되죠~
      겁내지 말고 "앞으로 GO" 하는게 중요하다고 생각합니다
      (뭐 저도 아는건 별로 없지만 말입니다;; )

  2. Favicon of http://blog.naver.com/khmirage.do BlogIcon 환상경 2007.04.01 10:52 address edit & del reply

    그럼 제가 Top 구현할때니 GUI껍질은 Lowid님이 입히시는거로 후다다닥 =3=3=3=3=3

    • lowid 2007.04.01 17:37 address edit & del

      다 하시고 소스 공개하면
      제가 함 건들여보져

prev 1 2 3 4 5 6 next