#define CH_LIRA 92
#define CH_ESC 27
-
+
/*****************************************************************************/
/* Definitions for directory reading functions */
};
unsigned char __fastcall__ _cbm_filetype (unsigned char c);
-/* Map the start character for a file type to one of the file types above.
- * Note: 'd' will always mapped to CBM_T_DEL. The calling function has to
- * look at the following character to determine if the file type is actually
+/* Map the start character for a file type to one of the file types above.
+ * Note: 'd' will always mapped to CBM_T_DEL. The calling function has to
+ * look at the following character to determine if the file type is actually
* CBM_T_DIR.
* This is a function used by the implementation. There is usually no need
* to call it from user code.
* _oserror contains an error-code, then (see above table).
*/
-unsigned char __fastcall__ cbm_opendir (unsigned char lfn, unsigned char device);
-/* Opens directory listing.
- * Returns 0 if openning directory was successful;
- * otherwise, an error-code corresponding to cbm_open().
+unsigned char cbm_opendir (unsigned char lfn, unsigned char device, ...);
+/* Opens directory listing. Returns 0 if opening directory was successful;
+ * otherwise, an error-code corresponding to cbm_open(). As an optional
+ * argument, the name of the directory may be passed to the function. If
+ * no explicit name is specified, "$" is used.
*/
unsigned char __fastcall__ cbm_readdir (unsigned char lfn,
/* in directory listings). */
+#include <stdarg.h>
#include <cbm.h>
#include <errno.h>
-/* Opens directory listing.
-** Returns 0 if openning directory was successful;
-** otherwise, an error-code corresponding to cbm_open().
+/* Opens directory listing. Returns 0 if opening directory was successful;
+** otherwise, an error-code corresponding to cbm_open(). As an optional
+** argument, the name of the directory may be passed to the function. If
+** no explicit name is specified, "$" is used.
*/
-unsigned char __fastcall__ cbm_opendir (unsigned char lfn, unsigned char device)
+unsigned char cbm_opendir (unsigned char lfn, unsigned char device, ...)
{
- if (cbm_open (lfn, device, CBM_READ, "$") == 0) {
+ va_list ap;
+ const char* name = "$";
+
+ /* The name used in cbm_open may optionally be passed */
+ if (__argsize__ == 4) {
+ va_start (ap, device);
+ name = va_arg (ap, const char*);
+ va_end (ap);
+ }
+
+ /* Open the directory */
+ if (cbm_open (lfn, device, CBM_READ, name) == 0) {
if ((_oserror = cbm_k_chkin (lfn)) == 0) {
/* Ignore start address */
cbm_k_basin();