About
Docs
Files
Support
Index

Essentials
AutoDocs
Library functions
Cooperate
Process mastering
Debug
Own debugging kit
FGE
Smart modeid pick
Loader
Shared lib. loader
Macros
Helper macros
Structs
All the structures
Logs
Library changelogs
Tools
Progs baked inside

API
crt_createargv()A
crt_destroyargv()A
crt_initmethod()A
crt_exitmethod()A
crt_newinstance()A
crt_freeinstance()A
ctl_clipath()A
ctl_devmount()A
ctl_devunmount()A
ctl_diskreqoff()A
ctl_diskreqon()A
ctl_haltidcmp()A
ctl_newshell()A
ctl_rearrangecon()A
ctl_relabel()A
ctl_setclistack()A
ctl_swapbackpen()A
ctl_udirassign()A
ctl_addbartrigger()A
ctl_pokebartrigger()A
ctl_rembartrigger()A
ctl_addconlogo()A
ctl_swapconlogo()A
ctl_remconlogo()A
ctl_addconlogof()A
ctl_remconlogof()A
ctl_setconlogof()A
ctl_openconscreen()A
ctl_closeconscreen()A
ctl_doconswitch()A
ctl_undoconswitch()A
ctl_addidcmphandler()A
ctl_remidcmphandler()A
ctl_findscreensafe()A
ctl_lockscreensafe()A
ctl_unlockscreensafe()A
ctl_addviewctrl()A
ctl_remviewctrl()A
ctl_zoomifycon()A
ctl_setsmparams()A
dev_getdiskcmdset()A
dev_opendiskdev()A
dev_closediskdev()A
dev_getdiskgeo()A
dev_freediskgeo()A
dev_getdiskrdb()A
dev_freediskrdb()A
dmt_mountcb()A
dos_addfdrelay()A
dos_ctrlfdrelay()A
dos_dopacket()A
dos_getpacket()A
dos_qflink()A
dos_qfopen()A
dos_qfwait()A
dos_qfispending()A
dos_qfsetmode()A
dos_qfsetintsig()A
dos_qfsetfctwait()A
dos_qfread()A
dos_qfwrite()A
dos_qfseek()A
dos_qfabort()A
dos_qfclose()A
dos_remfdrelay()A
dos_addlinkpoint()A
dos_dclinkpoint()A
dos_remlinkpoint()A
dos_devbymsgport()A
dos_makedevice()A
dos_checkdevice()A
dos_killdevice()A
dos_getfmfdrelay()A
dos_freefmfdrelay()A
dos_replypacket()A
dos_swapmpfdrelay()A
dos_waitpacket()A
han_binaryifh()A
han_rollifh()A
han_rwifh()A
han_termifh()A
mem_allocbmapthere()A
mem_cooperate()A
mem_dosynctask()A
mem_dosynctasks()A
mem_freepentab()A
mem_getwbstartup()A
mem_grabqarea()A
mem_iloadseg()A
mem_uniloadseg()A
mem_iloadseg2()A
mem_uniloadseg2()A
mem_initemptybmap()A
mem_remapbitmap()A
mem_remapbitmap2()A
mem_signalsafe()A
mem_makebmapfromimg()A
mem_addexhandler()A
mem_remexhandler()A
mem_attachhotvec()A
mem_attachrelhotvec()A
mem_detachhotvec()A
mem_resolvehotvec()A
mem_obtainhotvec()A
mem_obtainrelhotvec()A
mem_openifh()A
mem_closeifh()A
mem_convimgtobmap()A
mem_copyitnimage()A
mem_freeitnimage()A
mem_setaddrjtslot()A
mem_setdatajtslot()A
mem_allocjumptable()A
mem_freejumptable()A
mem_swapjumptable()A
mem_filljumptable()A
mem_importjumptable()A
mem_growpenholder()A
mem_freepenholder()A
mem_loadpicture()A
mem_freepicture()A
mem_alloclfvec()A
mem_freelfvec()A
mem_checklfvec()A
mem_allocvecpooled()A
mem_freevecpooled()A
mem_setvecpooled()A
mem_allocmemregion()A
mem_freememregion()A
mem_attachsniffer()A
mem_detachsniffer()A
mem_allocterm()A
mem_fixterm()A
mem_freeterm()A
mem_maketokenlist()A
mem_freetokenlist()A
mod_codereloc()A
mod_codefree()A
mod_codefind()A
mod_findktpresby()A
mod_getmemlist()A
mod_kicktaglink()A
mod_kicktagunlink()A
mod_ktpresunlink()A
mod_ktprescount()A
mod_addmodule()A
mod_delmodule()A
mod_adddiskmodule()A
mod_deldiskmodule()A
nfo_devvercmp()A
nfo_findgfxentry()A
nfo_findgfxrange()A
nfo_findgfxreso()A
nfo_findgfxsm()A
nfo_fsquery()A
nfo_fssmvalid()A
nfo_getcmcolors()A
nfo_getconioreq()A
nfo_getconunit()A
nfo_getscparams()A
nfo_getdrimap()A
nfo_getviscount()A
nfo_getvisstate()A
nfo_getwinaddr()A
nfo_grepml()A
nfo_idcmptoindex()A
nfo_isblitable()A
nfo_ischildofproc()A
nfo_isdev64bit()A
nfo_isdirectory()A
nfo_isinstack()A
nfo_isonmemlist()A
nfo_isonlistofml()A
nfo_ispdev64bit()A
nfo_issegremote()A
nfo_istask()A
nfo_iswindow()A
nfo_ktm()A
nfo_libvercmp()A
nfo_m68kcputype()A
nfo_modeidcount()A
nfo_scanlist()A
nfo_scanturbo()A
nfo_screencount()A
nfo_stackreport()A
nfo_stackvalid()A
nfo_typeofgfxmem()A
nfo_waitback()A
nfo_whichchipset()A
nfo_getargsource()A
nfo_freeargsource()A
ctl_clirun()P
ctl_makedir()P
ctl_getsmparams()P
mem_addrfrombase()P
mem_findinfile()P
mem_findinfileq()P
mem_lzwcompress()P
mem_lzwdecompress()P
mem_lzwfree()P
mem_scanfile()P
mem_scanlbl()P
mem_allocarray()P
mem_accessarray()P
mem_freearray()P
mem_alloccluster()P
mem_freecluster()P
mem_getmemcluster()P
mem_freememcluster()P
mem_copysmlcb()P
mem_freesmlcb()P
mem_readsrcimage()P
mem_freesrcimage()P
nfo_getsystime()P
nfo_scanml()P
txt_debugprintf()P
txt_strboth()P
txt_strpat()P
cnv_ALtoULONG()I
cnv_AtoULONG()I
cnv_ULONGtoA()I
cnv_ULONGtoBITS()I
ctl_relocdrimap()I
dev_sizeingigs()I
dos_bcopydevice()I
mem_addrfromlvo()I
mem_csumchs32()I
mem_csumeor32()I
mem_csumint32()I
mem_fnv128hash()I
mem_fnv64hash()I
mem_pjw64hash()I
nfo_isconsole()I
nfo_ismode15khz()I
nfo_isprime()I
nfo_nearestprime()I
nfo_numdivisors()I
txt_bstrncat()I
txt_bstrnpcat()I
txt_strnvacat()I
txt_datdat()I
txt_fixquotes()I
txt_fnv128hash()I
txt_fnv64hash()I
txt_iniparse()I
txt_memcmp()I
txt_memfill()I
txt_needslash()I
txt_noansi()I
txt_nocomment()I
txt_parseline()I
txt_pjw64hash()I
txt_psnprintf()I
txt_quickhash()I
txt_skipcc()I
txt_strchr()I
txt_strcmp()I
txt_strcspn()I
txt_stripansi()I
txt_strlen()I
txt_strncat()I
txt_strnpcat()I
txt_strspn()I
txt_strstr()I
txt_strtok()I
txt_tokenify()I
txt_vcbpsnprintf()I
txt_vpsnprintf()I



N
F
O
_
F
S
Q
U
E
R
Y
(
)

SOURCE: qdev_autodocs.txt 1.163 (12/09/2014) English

                                 AMIGA - NFO_#?
 ----------------------------------------------------------------------------

   NAME

      nfo_fsquery() - General purpose filesystem query routine.



   SYNOPSIS

      success = nfo_fsquery(userlen, exlen, file, edval, 
                                  termsig, userdata, usercode);

      BOOL nfo_fsquery(ULONG, ULONG, UBYTE *, LONG, 
                 ULONG, void *, BOOL (*)(struct nfo_fsq_cb *));



   FUNCTION

      This function allows to query objects on a filesystem. It
      uses 'ExAll()' to do that and this 'ExAllData' structure
      that is available to user in the callback.



   INPUTS

      userlen  - General purpose buffer length that can be used
                 in the callback per 'nfo_fsquery()'. Passing 0
                 will give user 4 bytes in the callback member.

      exlen    - 'ExAll()' buffer length, see source code for a
                 minimum value.

      file     - File or path to 'Lock()'.

      edval    - One of ED_xxx val. as taken from 'dos/exall.h'.

      termsig  - Optional termination signal to get out of the
                 loop at any time. Values from 'AllocSignal()'
                 must be '(1L << sig)'. 0 means no term. sig.

      userdata - External user data/structure.

      usercode - Callback function.



   RETURNS

      Returns TRUE if everything went fine or FALSE otherwise.



   BASES

      SysBase, DOSBase



   NOTES

      Although this function was written in such a way that it
      can call itself in the callback, it is generally not wise
      to do so without constant stack size monitoring! This
      function will eat at most 120 bytes of stack. In theory
      this should allow up to 25 inner calls with 4096 bytes of
      stack, practically it is 15 before stack drops to 1024
      bytes. This is still most efficient way of listing files
      if you know you wont cross(by recursing) 15 directories.

      Callback structure is described in the header file.

      If termination signal was used then it must be cleared
      ('Signal(0L, signal)') after the function returns or else
      it will trigger further!



   SEE ALSO

   EXAMPLE

      ...

      void fsq_abspath(BOOL path, UBYTE *buf, LONG buflen, 
                                        UBYTE *base, UBYTE *visit)
      {
        txt_psnprintf(buf, buflen, "%s%c%s%c", 
                                        base, txt_needslash(base), 
                       visit, ((path) ? txt_needslash(visit) : 0));
      }

      BOOL fsq_cb(struct nfo_fsq_cb *fc)
      {
        if (fc->fc_ead->ed_Type == ST_FILE)
        {
          fsq_abspath(FALSE, fc->fc_userptr, fc->fc_userlen,
                                 fc->fc_file, fc->fc_ead->ed_Name);

          FPrintf(Output(), "   file: %s\n", (LONG)fc->fc_userptr);
        }
        else
        {
          fsq_abspath(TRUE, fc->fc_userptr, fc->fc_userlen,
                                 fc->fc_file, fc->fc_ead->ed_Name);

          FPrintf(Output(), " dir: %s\n", (LONG)fc->fc_userptr);

          if (nfo_stackreport(NULL) > 1024)
          {
            if ((nfo_fsquery(fc->fc_userlen, fc->fc_exlen, 
                      fc->fc_userptr, fc->fc_edval, fc->fc_termsig, 
                       fc->fc_userdata, fc->fc_usercode)) == FALSE)
            {
              /*
               * This is to get rid of irrelevant error messages.
              */
              if ((SetSignal(0L, 0L) & fc->fc_termsig) != 
                                                    fc->fc_termsig)
              {
                FPrintf(Output(), "error: cant access '%s'!\n", 
                                             (LONG)fc->fc_userptr);

                Signal(FindTask(NULL), fc->fc_termsig);
              }

              return FALSE;
            }
          }
          else
          {
            FPrintf(Output(), "   warning: stack overflow"
                                                    " avoided!\n");
          }
        }

        return TRUE;
      }

      int main(int argc, char **argv)
      {
        if (argc >= 2)
        {
          nfo_fsquery(1024, 1024, argv[1], ED_TYPE, SIGBREAKF_CTRL_C, 
                                                      NULL, fsq_cb);

          SetSignal(0L, SIGBREAKF_CTRL_C);
        }

        return 0;
      }



   BUGS

      None known.



 ----------------------------------------------------------------------------
    


No more fear cus pure HTML is here!
Copyright (C) 2013-2014 by Burnt Chip Dominators