home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0682.ZIP / CCE_0682.PD / DSPSHELL / C_SOURCE / EASYFSEL.C < prev    next >
C/C++ Source or Header  |  1993-08-30  |  6KB  |  212 lines

  1. /******************************************************************
  2.  * Routine zum leichten und AES-Versionsabhängigen Aufruf der GEM *
  3.  * Fileselectorbox inklusive Routinen zum Umgang mit Dateien      *
  4.  ******************************************************************/
  5. #include <aes.h>
  6. #include <vdi.h>
  7. #include "powergem.h"
  8. #include <ext.h>
  9. #include <string.h>
  10. #include <stdlib.h>
  11. #include <tos.h>
  12. #include <portab.h>
  13.  
  14. #ifndef _BYTE_
  15. typedef unsigned char byte;
  16. #endif
  17.  
  18. /* Funktionsprototypen */
  19. boolean easy_fsel(char *pfad,char *dateiname,char *text);
  20. void build_filname(char *dest,char *pfad,char *dateiname);
  21. void extract_filename(char *pfad,char *dateiname,char *source);
  22. char *swap_extension(char *dateiname,char *ext);
  23. boolean check_extension(char *datei_name,char *ext);
  24. boolean exist_file(const char *dateiname);
  25. char *get_akt_path(char *path);
  26. void set_new_path(char *path);
  27. boolean get_cookie(char *cookiename,long *cookie_value);
  28.  
  29. /****************************************************************
  30.  * Zeigt eine FSELBOX je nach AES-Version an und übernimmt Aus- * 
  31.  * wertung                                                        *
  32.  * Input: pfad: Pfad der aufzurufenden Datei                    *
  33.  *        dateiname: Dateiname                                    *
  34.  *        text: Infotext für fselextinput()                        *
  35.  * Output:TRUE oder FALSE                                        *  
  36.  ****************************************************************/
  37. boolean easy_fsel(char *pfad,char *dateiname,char *text)
  38. {
  39. int button,result;
  40. long c_wert=0; 
  41. extern GEMPARBLK _GemParBlk;
  42. /* je nach AES_Version FSELBOX  aufrufen */
  43. if(_GemParBlk.global[0]<0x0014 && get_cookie("FSEL",&c_wert)==FALSE)
  44.     {
  45.     result=fsel_input(pfad,dateiname,&button);
  46.     }
  47. else
  48.     result=fsel_exinput(pfad,dateiname,&button,text);
  49. blank( 0,0,0,0,0); /* REDRAW */
  50. /* Wenn Fehler aufgetreten oder Abbruch gewählt: */
  51. if(result==0 || button==0)
  52.     return FALSE;
  53. else 
  54.     return TRUE;
  55. }
  56. /****************************************************************
  57.  * Bastelt Pfad und Dateiname zusammen                             *
  58.  * Input: dest: Zeiger auf Zielstring                            *
  59.  *        pfad: Pfadname                                        *
  60.  *        dateiname: Dateiname                                    *
  61.  ****************************************************************/
  62. void build_filname(char *dest,char *pfad,char *dateiname)
  63. {
  64. char *xyz;
  65. strcpy(dest,pfad);
  66. xyz=strrchr(dest,(int)'\\');
  67. if(xyz)    
  68.     strcpy(++xyz,dateiname);
  69. }
  70. /***************************************************************
  71.  * Extrahiert Pfad und Dateiname aus String                       *
  72.  * Input: pfad: Zeiger für Zielpfad                               *
  73.  *           dateiname: Zeiger für Zieldateiname                   *
  74.  *        source:  Zeiger auf Pfaddateistring                   *        
  75.  ***************************************************************/
  76. void extract_filename(char *pfad,char *dateiname,char *source)
  77. {
  78. char *xyz;
  79. strcpy(pfad,source);
  80. xyz=strrchr(pfad,(int)'\\');
  81. if(xyz)
  82.     strcpy(dateiname,xyz+1);
  83.  
  84. strcpy(pfad,source);
  85. *xyz=0x0;
  86. }
  87. /***************************************************************
  88.  * Tauscht aktuelles Extension aus                               *
  89.  * Input: dateiname Dateiname mit altem Extension              *
  90.  *        ext         neues Extension (ohne PUNKT !!!               *        
  91.  ***************************************************************/
  92. char *swap_extension(char *dateiname,char *ext)
  93. {
  94. char *xyz;
  95. xyz=strrchr(dateiname,(int)'.');
  96. if(xyz) 
  97.     {
  98.     if(ext[0] != 0x0) 
  99.         strcpy(++xyz,ext);
  100.     else
  101.         strcpy(xyz,ext);
  102.     }
  103. else        /* Keine Endung */
  104.     {
  105.     if(ext[0] != 0x0) 
  106.         {
  107.         strcat(dateiname,"." );
  108.         strcat(dateiname,ext);
  109.         }
  110.     }
  111. return(dateiname);
  112. }
  113. /***************************************************************
  114.  * Vergleicht Extension                                         *
  115.  * Input: datei_name mit seine Extension                       *
  116.  *           vergleichendes Extension                               *            
  117.  * Output:TRUE oder FALSE                                       * 
  118.  ***************************************************************/
  119. boolean check_extension(char *datei_name,char *ext)
  120. {
  121. char *xyz;
  122. xyz=strrchr(datei_name,(int)'.');
  123. if(xyz) 
  124.     {
  125.     if(!strnicmp( ++xyz,ext,3))
  126.         return TRUE;
  127.     }
  128. else        /* Keine Endung */
  129.     {
  130.     if(ext[0] == 0x0) 
  131.         return TRUE;
  132.     }
  133. return FALSE;
  134. }
  135. /****************************************************************
  136.  * Prüft ob die Datei schon existiert                             *
  137.  * Input: dateiname: Dateiname                                    *
  138.  ****************************************************************/
  139. boolean exist_file(const char *dateiname)
  140. {
  141. if(Fsfirst(dateiname,FA_READONLY|FA_HIDDEN|FA_ARCHIVE|FA_SYSTEM)==0)
  142.     return TRUE;
  143. else
  144.     return FALSE;
  145. }    
  146. /****************************************************************
  147.  * Gibt aktuelles Laufwerk und dessen Pfad zurück                 *
  148.  * Input: path: Zeiger auf String                                 *
  149.  * Output: Zeiger auf aktuelle Laufwerk und Directory            *
  150.  ****************************************************************/
  151. char *get_akt_path(char *path)
  152. {
  153. strcpy(path," :");
  154. path[0]='A'+ getdisk();    /* Laufwerk  */
  155. getcurdir(0,path+2);    /* Directory */     
  156. strcpy(path+strlen(path),"\\*.*");
  157. return(path);
  158. }
  159. /****************************************************************
  160.  * Setzt neues Laufwerk und dessen Pfad                             *
  161.  * Input: path: Zeiger auf Pfad                                 *
  162.  ****************************************************************/
  163. void set_new_path(char *path)
  164. {
  165. char lw;
  166.  
  167. if(path[1]== ':')
  168.     {
  169.     lw=path[0]-'A';
  170.     setdisk((int)lw);
  171.     chdir(path+2);
  172.     }
  173. else
  174.     {
  175.     lw=getdisk();
  176.     setdisk((int)lw);
  177.     chdir(path+2);
  178.     }
  179. }
  180. /****************************************************************
  181.  * Sucht nach einem Cookie, und liefert es bei Erfolg zurück    *
  182.  * Input: cookie_name: Name des zu suchenden ...                *
  183.  *           cookie_value: Zeiger auf den späteren Inhalt des      *
  184.  *                         COOKIES                                    *
  185.  * Output: TRUE und Inhalt oder FALSE                            *
  186.  ****************************************************************/
  187. boolean get_cookie(char *cookiename,long *cookie_value)
  188. {
  189. long old_stack;
  190. long *cookiejar;
  191. old_stack=Super(0L);
  192. cookiejar= *((long **)0x5A0L); /* Zeiger auf Cookie holen */ 
  193. Super((void *)old_stack);
  194. if(!cookiejar)return FALSE;        /* Cookie vorhanden ? */    
  195.  
  196. do
  197.     {
  198.     /* gesuchtes COOKIE ? */
  199.     if(!strncmp((char *)cookiejar,cookiename,4)) 
  200.         {
  201.         if(cookie_value)
  202.             {
  203.             *cookie_value=cookiejar[1];
  204.             return TRUE;
  205.             }
  206.         }
  207.     else
  208.         cookiejar= &(cookiejar[2]);
  209.     } while(cookiejar[0]); /* solange nicht NULL-COOKIE */
  210. return FALSE;
  211. }
  212. /* EOF */