]> jfr.im git - irc/kvirc/kvirc-scripts.git/commitdiff
fix debug messages
authorNoldor <redacted>
Mon, 29 Jan 2007 18:48:59 +0000 (18:48 +0000)
committerNoldor <redacted>
Mon, 29 Jan 2007 18:48:59 +0000 (18:48 +0000)
NGL fserv/src/NGLfserv_classes_dirview.kvs
NGL fserv/src/NGLfserv_classes_gui_sharedfiles.kvs
NGL fserv/src/NGLfserv_classes_trigger.kvs
NGL fserv/src/NGLfserv_config_load.kvs
NGL fserv/src/NGLfserv_config_saveTree.kvs

index ef8b811adac0169b1f978e2123743a46290f0ce5..7d0165ab593054ed74f9ee2be7045443d8289b5d 100644 (file)
@@ -287,10 +287,7 @@ alias(NGLfserv::classes::dirview)
                                        $$->%trigger->$appendExtradir(%rootpath,$$->%trigger->$getLocalTriggerPath(%parent->%virtual_node),%check)
                                }
                                else
-                                       if (!%check)  NGLfserv::corefunctions::nglwarning "Folder already present!"
-       
-               
-                                       
+                                       if (!%check)  NGLfserv::corefunctions::nglwarning "Folder already present!"                             
                        }
                 }
                 function deleteChildren()
@@ -300,9 +297,7 @@ alias(NGLfserv::classes::dirview)
                }
                function refreshView()
                {
-                       debug refreshing view $0
                        if ($0==$$->%trigger->$firstNode() || $0==$$->%trigger){
-                               debug è cambiato il nodo principale
                                $$->$deleteChildren($$)
                                $$->%virtual_node=$$->%trigger->$firstNode()
                                $$->$showNode($$)
index ebeeace353eb34467a15aa96134e5b25c39c5236..6c27355f057398abec78a6415d6fdbef7b3aa469 100644 (file)
@@ -117,7 +117,6 @@ alias(NGLfserv::classes::gui::sharedfiles)
                }
                fservNotBusyEvent()
                {
-                       debug NOT BUSY
                        $$->$setEnabled($true)
                        $$->$parent()->$changeTab($$,&Shared Files,161)
                        $$->%busy=$false
index 800c967c0c1388a997be555f5167d2a83b91b1d0..503f3f5daf2833eabd0e6a4e6dfde79a6a55b3c7 100644 (file)
-alias(NGLfserv::classes::trigger)\r
-{\r
-       class(NGLfserv::classes::trigger,object)\r
-       {\r
-               function constructor()\r
-               {\r
-                       // creo la lista in cui verranno memorizzati i nodi "reali" cioè i vari punti di ingresso sul disco\r
-                       $$->%extraDirs=$new(list,$this)\r
-                       $$->%index=0\r
-                       objects.connect $this triggerbusy %G_fserverbusyhandler fserverbusyevent\r
-                       objects.connect $this triggerready %G_fserverbusyhandler fserverNotBusyEvent\r
-                       objects.connect $$ scancompleted $$ checkextradirs\r
-       \r
-               }\r
-               function rootPath()\r
-               {\r
-                       return $$->%rootPath\r
-               }       \r
-                       \r
-               function setNode()\r
-               {\r
-                       // nodo su cui ci troviamo attualmente\r
-                       $$->%node=$0\r
-               }\r
-               function node()\r
-               {\r
-                       return $$->%node\r
-               }\r
-               function setName()\r
-               {\r
-                       // nome del trigger\r
-                       $$->%triggerName=$0\r
-               }\r
-               function triggerName()\r
-               {\r
-                       return $$->%triggerName\r
-               }\r
-               \r
-       \r
-               function addChannel()\r
-               {\r
-                       // dizionario in cui memorizziamo i canali in cui è attivo il trigger\r
-                       $$->%activechannels{$0}=$1\r
-               }\r
-               function activeChannels()\r
-               {\r
-                       return $$->%activechannels{}\r
-               }\r
-               function removeChannel()\r
-               {\r
-                       $$->%activechannels{$0}=\r
-               }\r
-               function getChannel()\r
-               {\r
-                       return $$->%activechannels{$0}\r
-               }\r
-               function channels()\r
-               {\r
-                       return $length($$->%activechannels{})\r
-               }\r
-               function channelExists()\r
-               {\r
-                       if ($$->%activechannels{$0}) return $true\r
-                       else return $false\r
-               }\r
-               setRealTriggerPath()\r
-               {\r
-                        $$->%realTriggerPath=$0\r
-               }\r
-               function getRealTriggerPath()\r
-               {\r
-               \r
-                       return $$->%realTriggerPath\r
-               }\r
-                function removeNode(virtual node)\r
-               {\r
-                       if ($0->%extraDirPath) \r
-                               $$->$removeExtraDir($0)\r
-                       delete $0\r
-               }\r
-               function removeExtraDir(node)\r
-               {\r
-                       for(%i=0;%i<$length($$->%extraDirs->$count);%i++;){\r
-                               if ($$->%extraDirs->$item(%i)->%node==$0) break\r
-                       }\r
-                       delete $$->%extraDirs->$item(%i)\r
-                       $$->%extraDirs->$remove(%i)\r
-               }\r
-               function extraDirsCount()\r
-               {\r
-                       return $$->%extraDirs->$count()\r
-               }\r
-               function extraDir(index)\r
-               {\r
-                       return $$->%extraDirs->$item($0)\r
-               }\r
-               // aggiunge il nodo "root" al trigger: a differenza delle successive dirs che si potranno aggiungere, questa verrà aggiungta \r
-               // eliminando tutta la parte del percorso, perdendo quindi anche il nome della cartella di origine.\r
-               // Esempio: la dir c:\\mp3\ sparirà e nel trigger ci saranno i files e dirs figli di essa.\r
-               function addFirstNode()\r
-               {\r
-                       %rootpath = $str.replace($0,"/","\\")\r
-                       if($str.right(%rootpath, 1) != "/") %rootpath .= "/"            \r
-                       $$->%firstnode=$$->$addNode("",$this,%rootpath)\r
-                       $$->%realTriggerPath = $str.replace($0,"/","\\")\r
-                       $$->%rootnode=$$->%firstnode\r
-                       $$->%triggerName=$1\r
-                       $$->%rootpath=%rootpath\r
-                       $$->%time=$hptimestamp()\r
-                       $$->%time_available=0.300\r
-                       $$->%speedmeter=0\r
-                       $$->%count=0\r
-                       $$->$scanSubFolders(%rootpath,$$->%firstnode)\r
-                       $$->$startTimer(1000)\r
-                                       \r
-               }\r
-               function setFirstEmptyNode()\r
-               {\r
-                       // flag attivato quando al load del trigger, risulta che il nodo principale non esiste sul disco\r
-                       $$->%firstNodeEmpty=$true\r
-               }\r
-               \r
-               // funzione che aggiunge un nodo al nostro albero di directories; come parametri vengono richiesti: nome della cartella, nodo padre, percorso iniziale sul disco\r
-               function addNode()\r
-               {\r
-                       %node=$new(object,$1)\r
-                       %node->%index=$$->%index\r
-                       $$->%index++\r
-                       %node->%text=$0\r
-                       return %node\r
-               }\r
-               function appendExtraDir()\r
-               {\r
-                       %node=$new(object,$this)\r
-                       %node->%extraDirPath=$0/\r
-                       %node->%pathFromTrigger=$1\r
-                       if ($2) {\r
-                               %node->%node=$2\r
-                               $2->%extraDirPath=$0/\r
-                       }\r
-                       $$->%extraDirs->$append(%node)\r
-               }\r
-               function firstNode()\r
-               {\r
-                       return $$->%firstnode\r
-               }\r
-               \r
-               // aggiunge una dir a partire da un nodo\r
-               function addFolder(complete path, parent node)\r
-               {\r
-                       // viene reso il path in standard unix\r
-                       %rootpath = $str.replace($0,"/","\\")\r
-                       // fixato con la / \r
-                       if($str.right(%rootpath, 1) != "/") %rootpath .= "/"\r
-                       // estraiamo il nome della dir \r
-                       %dir_name = $file.extractfilename($str.left(%rootpath,$($str.len(%rootpath)-1)))\r
-                       // e verifichiamo se già esiste nel nodo parent\r
-                       if ($$->$checkFolderExists(%dir_name,$1)) {\r
-                               debug %dir_name già esiste\r
-                               return $false\r
-                       }\r
-                       // aggiungiamo il nodo al parent\r
-                       %node=$$->$addNode(%dir_name,$1)\r
-                       debug parent $1->%text e rooth %rootpath\r
-                       // e memorizziamo lil nodo e la path per utilizzarli come riferimento nello scan in background\r
-                       $$->%rootnode=%node\r
-                       $$->%rootpath=%rootpath\r
-                       //\r
-                       $$->%time=$hptimestamp()\r
-                       $$->%time_available=0.300\r
-                       $$->%speedmeter=0\r
-                       if ($$->%intimer) return %node\r
-                       $$->%count=0\r
-                       $$->%oldcount=0\r
-                       $$->$emit(triggerBusy)\r
-                       $$->%noupdate=$true\r
-                       $$->%addnode=$1\r
-                       $$->$scanSubFolders(%rootpath,%node)\r
-                       $$->$startTimer(1000)\r
-                       return %node\r
-               }\r
-               function update()\r
-               {\r
-                       $$->$updateStart($true)\r
-               }\r
-               function updateStart()\r
-               {\r
-                       $$->%update=$true\r
-                       $$->%extraDirs->$moveFirst()\r
-                       $$->%rootpath=$$->%realTriggerPath\r
-                       if ($0){        \r
-                               $$->%nsi=$$->$getNotSharedInfo()\r
-                               delete $$->$firstNode()\r
-                       }\r
-                       NGLfserv::corefunctions::ngldebug "start background HD scanning"        \r
-       \r
-                       if ($$->%firstNodeEmpty){\r
-                               NGLfserv::corefunctions::ngldebug first node is empty\r
-                               NGLfserv::corefunctions::ngldebug add fake dir\r
-                               $$->%firstnode=$$->$addNode("",$this,"")\r
-                               $$->%firstNodeEmpty=$true\r
-                               //$$->%rootnode=$$->$addFolder($$->%rootpath,$$->%firstnode)\r
-                       }\r
-                       else{   \r
-                               $$->%firstnode=$$->$addNode("",$this)   \r
-                               $$->%rootnode=$$->%firstnode\r
-                               NGLfserv::corefunctions::ngldebug add main node with path $$->%rootpath\r
-                               $$->%time=$hptimestamp()\r
-                               $$->%count=0\r
-                               $$->%oldcount=0\r
-                               $$->%time_available=0.300                       \r
-                               $$->$scanSubFolders($$->%rootpath,$$->%rootnode)\r
-                               $$->%speedmeter=0\r
-                               $$->$startTimer(1000)\r
-                       }                       \r
-               }\r
-               function checkextradirs()\r
-               {\r
-                       if (!$$->%update) {\r
-                               $$->$emit(updated,$$->%addnode)\r
-                               $$->%addnode=\r
-                                       return\r
-                       }               \r
-                       if (!$$->%extraDirs->$current()) {\r
-                               $$->%update=$false\r
-                               NGLfserv::corefunctions::ngldebug  NO EXTRA DIRS: scan trigger $k(4,0)$$->%triggerName$k  completed :=)\r
-                               if ($objects.exists($$->%nsi)){\r
-                                       $$->$createDirFilesNotShared($$->%nsi)\r
-                                       delete $$->%nsi\r
-                                       $$->%nsi=\r
-                               }\r
-                               $$->%changed=$true\r
-                               $$->$emit(triggerReady)\r
-                               $$->$emit(updated,$$->%firstnode)       \r
-                       }\r
-                       else{\r
-                               while (!$file.exists($$->%extraDirs->$current()->%extraDirPath)){\r
-                                       $$->%extraDirs->$moveNext()\r
-                                       if (!$$->%extraDirs->$current()){\r
-                                               $$->%update=$false\r
-                                               $$->$emit(updated,$$->%firstnode)       \r
-                                               return\r
-                                       }               \r
-                               }\r
-                               %rootpath=$$->%extraDirs->$current()->%extraDirPath\r
-                               NGLfserv::corefunctions::ngldebug adding extra dir with  path Fromtrigger $$->%extraDirs->$current()->%pathFromTrigger\r
-                               NGLfserv::corefunctions::ngldebug extra dir path $$->%extraDirs->$current()->%extraDirPath\r
-                               if($$->%firstNodeEmpty) \r
-                                       %parent_node=$$->%firstNode()\r
-                               else \r
-                                       %parent_node=$$->$getFolderObjFromPath($$->%extraDirs->$current()->%pathFromTrigger)\r
-                               NGLfserv::corefunctions::ngldebug aggiungo un nuovo nodo in base a questo percorso %rootpath\r
-                               %node=$$->$addFolder(%rootpath,%parent_node)\r
-                               $$->%extraDirs->$current()->%node=%node\r
-                               %node->%extraDirPath=%rootpath\r
-                               $$->%extraDirs->$moveNext()\r
-                               \r
-                       }                               \r
-               }\r
-               function timerEvent()\r
-               {\r
-                       $$->%time=$hptimestamp()\r
-                       $$->%count=0\r
-                       //debug in timer\r
-                       if (!$$->$scanSubFolders($$->%rootpath,$$->%rootnode)) {\r
-                               //NGLfserv::corefunctions::ngldebug scanned $$->%count nodes in $$->%time_available ms\r
-                               $$->$resetFlag()\r
-                               $$->$killtimers()\r
-                               $$->$emit(scancompleted)\r
-                       }\r
-                       else{\r
-                               NGLfserv::corefunctions::ngldebug scanned $$->%count nodes in $$->%time_available ms with \r
-                               //diff $($$->%count-$$->%oldcount)\r
-                               \r
-                               $$->%speedmeter++\r
-                               if ($$->%speedmeter>5){\r
-                                       $$->%time_available=$($$->%time_available+0.05)\r
-                                       if ($$->%time_available>0.600)  $$->%time_available=0.600\r
-                                       if ($$->%time_available<0.600) NGLfserv::corefunctions::ngldebug "Speed scan is low... I'm trying to increase it... at $$->%time_available ms"\r
-                               }\r
-                               \r
-                               /*\r
-                               if ($$->%count-$$->%oldcount<5) {\r
-                                       $$->%time_available+=0.05\r
-                                       NGLfserv::corefunctions::ngldebug "Speed scan is low... I'm trying to increase it... at $$->%time_available ms"\r
-                               }\r
-                               $$->%oldcount=$$->%count\r
-                               */\r
-                       }\r
-               }\r
-               function scanSubFolders()\r
-               {\r
-                       $$->%count=0\r
-                       $$->%time=$hptimestamp()\r
-                       \r
-                       if ($version(s)<20070116) {\r
-                               NGLfserv::corefunctions::ngldebug "KVIrc version too older: switching to old scanfiles routine"\r
-                               return $$->$oldScanSubFolders($0,$1)\r
-                       }\r
-                       \r
-                       else {\r
-                               NGLfserv::corefunctions::ngldebug "Using fast scan drive routine!"\r
-                               return $$->$oldScanSubFolders($0,$1)\r
-                       }       \r
-                       \r
-               }\r
-               function oldScanSubFolders()\r
-               {\r
-                       %path=$0\r
-                       %parent_node=$1\r
-                       if ($1->%thisNodeCompleted!="-1"){\r
-                               if (!$1->%thisNodeCompleted){\r
-                                        %offset=0\r
-                                        $$->%cache[]=$file.ls(%path,f)\r
-                               }\r
-                               else\r
-                               %offset=$1->%thisNodeCompleted\r
-                               %len=$length($$->%cache[])\r
-                               $$->%count+=$(%len-%offset)\r
-                               for(%j=%offset;%j<%len;%j++){\r
-                                       if ($$->%cache[%j]) \r
-                                       $$->$appendFile(%parent_node,$$->%cache[%j],$file.size(%path\/$$->%cache[%j]))\r
-                                       if (($hptimestamp-$$->%time)>$$->%time_available) break\r
-                               }\r
-                               if (%j==%len) {$1->%thisNodeCompleted=-1;$$->%cache[]=;}\r
-                               else $1->%thisNodeCompleted=$(%j+1)\r
-                       }\r
-                       if (($hptimestamp-$$->%time)>$$->%time_available) return $true\r
-                       %folders[]=$file.ls(%path,dn)\r
-                       %children[]=%parent_node->$children()\r
-                       %fl=$false\r
-                       %len=$length(%children[]);\r
-                       %i=0\r
-                       for (%ind=0;%ind<%folders[]#;%ind++) {\r
-                               if ((%folders[%ind]!="..") && (%folders[%ind]!=".")) {\r
-                                       if (%i<%len) %node=%children[%i]\r
-                                       else %node=$$->$addNode(%folders[%ind],%parent_node)\r
-                                       if (!%node->%allSubFoldersScanned || %node->%extraDirPath){\r
-                                               if (!$$->$oldScanSubFolders(%path%folders[%ind]"/",%node)){\r
-                                                       %node->%allSubFoldersScanned=$true()\r
-                                               }\r
-                                               else %fl=$true                  \r
-                                       }\r
-                                       %i++\r
-                               }\r
-                               if (%fl) break\r
-                       }\r
-                       if (%fl) return $true\r
-               }\r
-               function fastScanSubFolders()\r
-               {\r
-                       %path=$0\r
-       \r
-                       %parent_node=$1\r
-                       %children[]=%parent_node->$children()\r
-                       %len=$length(%children[]);\r
-                       %folders[]=$file.ls(%path,dn)   \r
-                       if (!$1->%files_list[]#) {\r
-                                               \r
-                               $1->%files_list[]<+$file.ls(%path,f)\r
-                               $$->%count+=$length($1->%files_list[])\r
-                               $1->%file_size[]<+$file.allSizes(%path)\r
-                               //$1->%thisNodeCompleted=$true\r
-                               if (($hptimestamp-$$->%time)>$$->%time_available) return $true  \r
-                       }\r
-                       if ($length(%folders[])<2) return\r
-                       if (!%len) %start=2\r
-                       else{\r
-                               %start=$(2+%len-1)\r
-                               if ($$->$fastScanSubFolders(%path%folders[%start]"/",%children[$(%len-1)])) return $true\r
-                               %start++\r
-                       }\r
-                       for (%ind=%start;%ind<%folders[]#;%ind++) {\r
-                               if ($$->$fastScanSubFolders(%path%folders[%ind]"/",$$->$addNode(%folders[%ind],%parent_node))) {\r
-                                       %fl=$true\r
-                                       break\r
-                               }                       \r
-                       }\r
-                       if (%fl) return $true;\r
-               }\r
-               \r
-               function appendFile(node,file,size)\r
-               {\r
-                               \r
-                               $0->%files_list[]<+$1\r
-                               $0->%file_size[]<+$2\r
-               }\r
-       \r
-               function resetFlag()\r
-               {\r
-                       $$->$reset($$->%firstnode)\r
-                       }\r
-               function reset()\r
-               {\r
-                       $0->%allSubFoldersScanned=\r
-                       $0->%thisNodeCompleted=\r
-                       %folders[]=$0->$children\r
-                       %len=$length(%folders[])\r
-                       for (%i=0;%i<%len;%i++;) $$->$reset(%folders[%i])\r
-               }\r
-                       \r
-               # metodo che si occupa di restituire la path completa "virtuale" del nodo stesso\r
-               # come parametro gli passiamo il "root" che indica la radice di questo ramo: può essere il root generale\r
-               # o in caso di triggers, una sezione specifica dell'albero\r
-               \r
-               function getVirtualFolderPath(node)\r
-               {\r
-                       %item=$0\r
-                       while(%item->$parent()->$parent()) {\r
-                               %path=%item->%text"\\"%path\r
-                               %item=%item->$parent()\r
-                       }\r
-                       return %path\r
-               }\r
-               \r
-               function getFolderById()\r
-               {\r
-                       return $$->$scanTreeFolder($$->%firstnode,$0)\r
-               }\r
-               \r
-               function scanTreeFolder()\r
-               {\r
-                       if ($0->%index==$1) return $0\r
-                       %folders[]=$0->$children()\r
-                       %len=$length(%folders[])\r
-                       for(%i=0;%i<%len;%i++){\r
-                               %found=$$->$scanTreeFolder(%folders[%i],$1) \r
-                               if (%found) break\r
-                       } \r
-                       NGLfserv::corefunctions::ngldebug ritorno %found\r
-                       return %found\r
-               }\r
-                       \r
-               function getFileById(node,id)\r
-               {\r
-                       %node=$0\r
-                       %fl=$1\r
-                       %child_idx=$str.rightfromfirst($str.lowcase(%fl),"|f")\r
-                       if (!$str.isnumber(%child_idx)) return $false\r
-                       if ((%child_idx>=$$->$filesCount(%node)) || (%child_idx<0)) return $false\r
-                       else return $$->$fileAt(%node,%child_idx)\r
-               }       \r
-               \r
-               function getFolderObjFromPath()\r
-               {\r
-                       %path=$0\r
-                       if ($1) %father=$1\r
-                       else %father=$$->%firstnode\r
-                       %index=0                \r
-                       while ($str.token(%index,"/",%path)){\r
-                               %found=$false\r
-                               %token= $str.token(%index,"/",%path) \r
-                               %children[]=%father->$children()                \r
-                               for (%i=0;%i<$length(%children[]);%i++) {\r
-                                        if ($$->$text(%children[%i]) ==%token) {\r
-                                               %father=%children[%i]\r
-                                               %found=$true\r
-                                               break\r
-                                       }\r
-                               }\r
-                               if (!%found) return $false\r
-                               %index++\r
-                       }\r
-                       return %father\r
-               }\r
-       \r
-               function getLocalTriggerPath()\r
-               {\r
-                       %item=$0\r
-                       %path=%item->%text"/"\r
-                        while(%item!=$$) {\r
-                               %item=%item->$parent()\r
-                               if (%item->%text) %path=%item->%text"/"%path\r
-                       }\r
-                       return %path    \r
-               }\r
-               function getRealPath(node)\r
-               {\r
-                       \r
-                       %item=$0\r
-                       if (%item==$$->%firstNode) debug sono nel nodo principale\r
-                       else debug non SONO\r
-                       //%path=%item->%text"/"\r
-                       while((!%item->%extraDirPath) && (%item!=$$->%firstNode)) {\r
-                                       debug risalgo %item->%text\r
-                                       %path<+%item->%text"/"\r
-                                       %item=%item->$parent()\r
-                                       //%path=%item->%text"/"%path\r
-                       }\r
-                       if (%item!=$$->%firstNode) return %item->%extraDirPath%path\r
-                       else return $$->%realTriggerPath%path\r
-               }\r
-       \r
-               internal function checkFolderExists()\r
-               {\r
-                       %children[]=$1->$children()\r
-                       for (%i=0;%i<$length(%children[]);%i++){\r
-                               if ($0==%children[%i]->%text) return  %children[%i]\r
-                       }\r
-                       return $false\r
-               }\r
-               \r
-               function filesList(node)\r
-               {\r
-                       return $0->%files_list[]\r
-               }\r
-               \r
-               function sizesList(node)\r
-               {\r
-                       return $0->%file_size[]\r
-               }\r
-                       \r
-               \r
-               \r
-               function filesCount(node)\r
-               {\r
-                       return $length($0->%files_list[])\r
-               }\r
-               \r
-               function somethingHasChanged()\r
-               {\r
-                       return $$->%changed\r
-               }\r
-               function setChanged\r
-               {\r
-                       $$->%changed=$0\r
-               }\r
-               function fileSizeAt(node,index)\r
-               {\r
-                       return $0->%file_size[$1]\r
-               }\r
-               function fileAt(node,index)\r
-               {\r
-                       return $0->%files_list[$1]\r
-               }\r
-               function fileIndex(node,file)\r
-               {\r
-                       for (%i=0;%i<$length($0->%files_list[]);%i++) {\r
-                               if ($0->%files_list[%i]==$1) return %i\r
-                       }\r
-                       return -1\r
-               }\r
-                       \r
-               function setText(node,text)\r
-               {\r
-                       $0->%text=$1\r
-               }\r
-               function text(node)\r
-               {\r
-                       return $0->%text\r
-               }\r
-               function isFileNotShared(node,file)\r
-               {\r
-                       if ($0->$parent()->%dirNotShared || $0->%filesNotShared{$0->%files_list[$1]}) return $true\r
-                       else return $false\r
-               }\r
-               function setFoldersNotShared(node)\r
-               {\r
-                       $0->%filesNotShared{}=\r
-                       %folder[]=$0->$children()\r
-                       %len=$length(%folder[])\r
-                       for(%i=0;%i<%len;%i++;){\r
-                               if (!%folder[%i]->%dirNotShared) $$->$setFoldersNotShared(%folder[%i])\r
-                       }       \r
-               }\r
-               function setFoldersShared(node)\r
-               {\r
-                       $0->%dirNotShared=\r
-                       $0->%filesNotShared{}=\r
-                       %folder[]=$0->$children()\r
-                       %len=$length(%folder[])\r
-                       for(%i=0;%i<%len;%i++;) $$->$setFoldersShared(%folder[%i])      \r
-               }\r
-               function  setFileNotShared(node,file)\r
-               {\r
-                       $0->%filesNotShared{$1}=$true\r
-               }\r
-               function  setFileShared(node,file)\r
-               {\r
-                       $0->%filesNotShared{$1}=\r
-                       if ($0->%filesNotShared{}#) $keys($0->%filesNotShared{})\r
-                       \r
-               }\r
-               function fileExists(node,file)\r
-               {\r
-                       %file=$str.lowcase($1)\r
-                       %node=$0\r
-                       %len=$$->$filesCount(%node)\r
-                       for (%i=0;%i<%len;%i++) if (%file==$str.lowcase($$->$fileAt(%node,%i))) return $$->$fileAt(%node,%i)\r
-                       return $false\r
-               }\r
-               function createDirFilesNotShared(node)\r
-               {\r
-                       for (%i=0;%i<$0->$count();%i++){\r
-                               %obj=$0->$item(%i)\r
-                               %fl=%obj->%files\r
-                               if (%fl) %files[]=$str.split("|",%fl)   \r
-                               %node=$$->$getFolderObjFromPath(%obj->%pathfromtrigger)\r
-                               if (!%fl)       %node->%dirNotShared=$true\r
-                               else foreach(%file,%files[]) if (%file) %node->%filesNotShared{%file}=$true\r
-                       }\r
-               }\r
-               function getNotSharedInfo()\r
-               {\r
-                       $$->%infons=$new(list,0)\r
-                       $$->$scanNotShared($$->%firstNode)\r
-                       return $$->%infons\r
-               }\r
-               function checkChildrenNotShared()\r
-               {\r
-                       %children[]=$0->$children()\r
-                       %len=$length(%children[])\r
-                       %cnt=0\r
-                       for (%i=0;%i<%len;%i++){\r
-                               if (%children[%i]->%dirNotShared) %cnt++\r
-                       }\r
-                       if (%cnt!=%i || ($length($0->%filesNotShared{})!=$length($0->%files_list[]))) return $false\r
-                       else return $true\r
-               }\r
-               function scanNotShared()\r
-               {\r
-                       %node=$0\r
-                       if ($length(%node->%filesNotShared{})){\r
-                               %folder=$new(object,$$->%infons)\r
-                               %folder->%pathfromtrigger=$$->$getLocalTriggerPath(%node)               \r
-                               foreach(%file,$keys(%node->%filesNotShared{}))  %tmp=%tmp%file|\r
-                               %folder->%files=%tmp\r
-                               $$->%infons->$append(%folder)\r
-                       }\r
-                       %folder[]=%node->$children()\r
-                       %len=$length(%folder[])\r
-                       for (%i=0;%i<%len;%i++;){\r
-                               if (!%folder[%i]->%dirNotShared) $$->$scanNotShared(%folder[%i])\r
-                               else{\r
-                                       %node=%folder[%i]\r
-                                       %dir=$new(object,$$->%infons)\r
-                                       %dir->%pathfromtrigger=$$->$getLocalTriggerPath(%node)\r
-                                       $$->%infons->$append(%dir)\r
-                               }\r
-                       }\r
-               }\r
-               function saveNotSharedInfo\r
-               {\r
-                       $$->%c=$0\r
-                       $$->%ns=0       \r
-                       $$->$scanTreeForNotShared($$->%firstNode)\r
-                       %ret=$$->%ns\r
-                       $$->%c=\r
-                       $$->%ns=\r
-                       return %ret\r
-               }\r
-               function scanTreeForNotShared()\r
-               {\r
-                       %node=$0\r
-                       if ($length(%node->%filesNotShared{})){\r
-                               config.setsection $$->%c notshared$$->%ns\r
-                               $$->%ns++\r
-                               config.write $$->%c pathfromtrigger $$->$getLocalTriggerPath(%node)\r
-                               foreach(%file,$keys(%node->%filesNotShared{}))  %tmp=%tmp%file|\r
-                               config.write $$->%c files %tmp\r
-                               NGLfserv::corefunctions::ngldebug files notshared of %node->%text are %tmp\r
-                       }\r
-                       %folder[]=%node->$children()\r
-                       %len=$length(%folder[])\r
-                       for (%i=0;%i<%len;%i++;){\r
-                               if (!%folder[%i]->%dirNotShared) $$->$scanTreeForNotShared(%folder[%i])\r
-                               else{\r
-                                       NGLfserv::corefunctions::ngldebug completamente non sharata %folder[%i]->%text\r
-                                       config.setsection $$->%c notshared$$->%ns\r
-                                       $$->%ns++\r
-                                       %node=%folder[%i]\r
-                                       config.write $$->%c pathfromtrigger $$->$getLocalTriggerPath(%node)\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
-\r
+alias(NGLfserv::classes::trigger)
+{
+       class(NGLfserv::classes::trigger,object)
+       {
+               function constructor()
+               {
+                       // creo la lista in cui verranno memorizzati i nodi "reali" cioè i vari punti di ingresso sul disco
+                       $$->%extraDirs=$new(list,$this)
+                       $$->%index=0
+                       objects.connect $this triggerbusy %G_fserverbusyhandler fserverbusyevent
+                       objects.connect $this triggerready %G_fserverbusyhandler fserverNotBusyEvent
+                       objects.connect $$ scancompleted $$ checkextradirs
+       
+               }
+               function rootPath()
+               {
+                       return $$->%rootPath
+               }       
+                       
+               function setNode()
+               {
+                       // nodo su cui ci troviamo attualmente
+                       $$->%node=$0
+               }
+               function node()
+               {
+                       return $$->%node
+               }
+               function setName()
+               {
+                       // nome del trigger
+                       $$->%triggerName=$0
+               }
+               function triggerName()
+               {
+                       return $$->%triggerName
+               }
+               
+       
+               function addChannel()
+               {
+                       // dizionario in cui memorizziamo i canali in cui è attivo il trigger
+                       $$->%activechannels{$0}=$1
+               }
+               function activeChannels()
+               {
+                       return $$->%activechannels{}
+               }
+               function removeChannel()
+               {
+                       $$->%activechannels{$0}=
+               }
+               function getChannel()
+               {
+                       return $$->%activechannels{$0}
+               }
+               function channels()
+               {
+                       return $length($$->%activechannels{})
+               }
+               function channelExists()
+               {
+                       if ($$->%activechannels{$0}) return $true
+                       else return $false
+               }
+               setRealTriggerPath()
+               {
+                        $$->%realTriggerPath=$0
+               }
+               function getRealTriggerPath()
+               {
+               
+                       return $$->%realTriggerPath
+               }
+                function removeNode(virtual node)
+               {
+                       if ($0->%extraDirPath) 
+                               $$->$removeExtraDir($0)
+                       delete $0
+               }
+               function removeExtraDir(node)
+               {
+                       for(%i=0;%i<$length($$->%extraDirs->$count);%i++;){
+                               if ($$->%extraDirs->$item(%i)->%node==$0) break
+                       }
+                       delete $$->%extraDirs->$item(%i)
+                       $$->%extraDirs->$remove(%i)
+               }
+               function extraDirsCount()
+               {
+                       return $$->%extraDirs->$count()
+               }
+               function extraDir(index)
+               {
+                       return $$->%extraDirs->$item($0)
+               }
+               // aggiunge il nodo "root" al trigger: a differenza delle successive dirs che si potranno aggiungere, questa verrà aggiungta 
+               // eliminando tutta la parte del percorso, perdendo quindi anche il nome della cartella di origine.
+               // Esempio: la dir c:\\mp3\ sparirà e nel trigger ci saranno i files e dirs figli di essa.
+               function addFirstNode()
+               {
+                       %rootpath = $str.replace($0,"/","\\")
+                       if($str.right(%rootpath, 1) != "/") %rootpath .= "/"            
+                       $$->%firstnode=$$->$addNode("",$this,%rootpath)
+                       $$->%realTriggerPath = $str.replace($0,"/","\\")
+                       $$->%rootnode=$$->%firstnode
+                       $$->%triggerName=$1
+                       $$->%rootpath=%rootpath
+                       $$->%time=$hptimestamp()
+                       $$->%time_available=0.300
+                       $$->%speedmeter=0
+                       $$->%count=0
+                       $$->$scanSubFolders(%rootpath,$$->%firstnode)
+                       $$->$startTimer(1000)
+                                       
+               }
+               function setFirstEmptyNode()
+               {
+                       // flag attivato quando al load del trigger, risulta che il nodo principale non esiste sul disco
+                       $$->%firstNodeEmpty=$true
+               }
+               
+               // funzione che aggiunge un nodo al nostro albero di directories; come parametri vengono richiesti: nome della cartella, nodo padre, percorso iniziale sul disco
+               function addNode()
+               {
+                       %node=$new(object,$1)
+                       %node->%index=$$->%index
+                       $$->%index++
+                       %node->%text=$0
+                       return %node
+               }
+               function appendExtraDir()
+               {
+                       %node=$new(object,$this)
+                       %node->%extraDirPath=$0/
+                       %node->%pathFromTrigger=$1
+                       if ($2) {
+                               %node->%node=$2
+                               $2->%extraDirPath=$0/
+                       }
+                       $$->%extraDirs->$append(%node)
+               }
+               function firstNode()
+               {
+                       return $$->%firstnode
+               }
+               
+               // aggiunge una dir a partire da un nodo
+               function addFolder(complete path, parent node)
+               {
+                       // viene reso il path in standard unix
+                       %rootpath = $str.replace($0,"/","\\")
+                       // fixato con la / 
+                       if($str.right(%rootpath, 1) != "/") %rootpath .= "/"
+                       // estraiamo il nome della dir 
+                       %dir_name = $file.extractfilename($str.left(%rootpath,$($str.len(%rootpath)-1)))
+                       // e verifichiamo se già esiste nel nodo parent
+                       if ($$->$checkFolderExists(%dir_name,$1)) {
+                               return $false
+                       }
+                       // aggiungiamo il nodo al parent
+                       %node=$$->$addNode(%dir_name,$1)
+                       // e memorizziamo lil nodo e la path per utilizzarli come riferimento nello scan in background
+                       $$->%rootnode=%node
+                       $$->%rootpath=%rootpath
+                       //
+                       $$->%time=$hptimestamp()
+                       $$->%time_available=0.300
+                       $$->%speedmeter=0
+                       if ($$->%intimer) return %node
+                       $$->%count=0
+                       $$->%oldcount=0
+                       $$->$emit(triggerBusy)
+                       $$->%noupdate=$true
+                       $$->%addnode=$1
+                       $$->$scanSubFolders(%rootpath,%node)
+                       $$->$startTimer(1000)
+                       return %node
+               }
+               function update()
+               {
+                       $$->$updateStart($true)
+               }
+               function updateStart()
+               {
+                       $$->%update=$true
+                       $$->%extraDirs->$moveFirst()
+                       $$->%rootpath=$$->%realTriggerPath
+                       if ($0){        
+                               $$->%nsi=$$->$getNotSharedInfo()
+                               delete $$->$firstNode()
+                       }
+                       NGLfserv::corefunctions::ngldebug "start background HD scanning"        
+       
+                       if ($$->%firstNodeEmpty){
+                               NGLfserv::corefunctions::ngldebug first node is empty
+                               NGLfserv::corefunctions::ngldebug add fake dir
+                               $$->%firstnode=$$->$addNode("",$this,"")
+                               $$->%firstNodeEmpty=$true
+                               //$$->%rootnode=$$->$addFolder($$->%rootpath,$$->%firstnode)
+                       }
+                       else{   
+                               $$->%firstnode=$$->$addNode("",$this)   
+                               $$->%rootnode=$$->%firstnode
+                               NGLfserv::corefunctions::ngldebug add main node with path $$->%rootpath
+                               $$->%time=$hptimestamp()
+                               $$->%count=0
+                               $$->%oldcount=0
+                               $$->%time_available=0.300                       
+                               $$->$scanSubFolders($$->%rootpath,$$->%rootnode)
+                               $$->%speedmeter=0
+                               $$->$startTimer(1000)
+                       }                       
+               }
+               function checkextradirs()
+               {
+                       if (!$$->%update) {
+                               $$->$emit(updated,$$->%addnode)
+                               $$->%addnode=
+                                       return
+                       }               
+                       if (!$$->%extraDirs->$current()) {
+                               $$->%update=$false
+                               NGLfserv::corefunctions::ngldebug  NO EXTRA DIRS: scan trigger $k(4,0)$$->%triggerName$k  completed :=)
+                               if ($objects.exists($$->%nsi)){
+                                       $$->$createDirFilesNotShared($$->%nsi)
+                                       delete $$->%nsi
+                                       $$->%nsi=
+                               }
+                               $$->%changed=$true
+                               $$->$emit(triggerReady)
+                               $$->$emit(updated,$$->%firstnode)       
+                       }
+                       else{
+                               while (!$file.exists($$->%extraDirs->$current()->%extraDirPath)){
+                                       $$->%extraDirs->$moveNext()
+                                       if (!$$->%extraDirs->$current()){
+                                               $$->%update=$false
+                                               $$->$emit(updated,$$->%firstnode)       
+                                               return
+                                       }               
+                               }
+                               %rootpath=$$->%extraDirs->$current()->%extraDirPath
+                               NGLfserv::corefunctions::ngldebug adding extra dir with  path Fromtrigger $$->%extraDirs->$current()->%pathFromTrigger
+                               NGLfserv::corefunctions::ngldebug extra dir path $$->%extraDirs->$current()->%extraDirPath
+                               if($$->%firstNodeEmpty) 
+                                       %parent_node=$$->%firstNode()
+                               else 
+                                       %parent_node=$$->$getFolderObjFromPath($$->%extraDirs->$current()->%pathFromTrigger)
+                               NGLfserv::corefunctions::ngldebug aggiungo un nuovo nodo in base a questo percorso %rootpath
+                               %node=$$->$addFolder(%rootpath,%parent_node)
+                               $$->%extraDirs->$current()->%node=%node
+                               %node->%extraDirPath=%rootpath
+                               $$->%extraDirs->$moveNext()
+                               
+                       }                               
+               }
+               function timerEvent()
+               {
+                       $$->%time=$hptimestamp()
+                       $$->%count=0
+                       //debug in timer
+                       if (!$$->$scanSubFolders($$->%rootpath,$$->%rootnode)) {
+                               //NGLfserv::corefunctions::ngldebug scanned $$->%count nodes in $$->%time_available ms
+                               $$->$resetFlag()
+                               $$->$killtimers()
+                               $$->$emit(scancompleted)
+                       }
+                       else{
+                               NGLfserv::corefunctions::ngldebug scanned $$->%count nodes in $$->%time_available ms with 
+                               //diff $($$->%count-$$->%oldcount)
+                               
+                               $$->%speedmeter++
+                               if ($$->%speedmeter>5){
+                                       $$->%time_available=$($$->%time_available+0.05)
+                                       if ($$->%time_available>0.600)  $$->%time_available=0.600
+                                       if ($$->%time_available<0.600) NGLfserv::corefunctions::ngldebug "Speed scan is low... I'm trying to increase it... at $$->%time_available ms"
+                               }
+                               
+                               /*
+                               if ($$->%count-$$->%oldcount<5) {
+                                       $$->%time_available+=0.05
+                                       NGLfserv::corefunctions::ngldebug "Speed scan is low... I'm trying to increase it... at $$->%time_available ms"
+                               }
+                               $$->%oldcount=$$->%count
+                               */
+                       }
+               }
+               function scanSubFolders()
+               {
+                       $$->%count=0
+                       $$->%time=$hptimestamp()
+                       
+                       if ($version(s)<20070116) {
+                               NGLfserv::corefunctions::ngldebug "KVIrc version too older: switching to old scanfiles routine"
+                               return $$->$oldScanSubFolders($0,$1)
+                       }
+                       
+                       else {
+                               NGLfserv::corefunctions::ngldebug "Using fast scan drive routine!"
+                               return $$->$oldScanSubFolders($0,$1)
+                       }       
+                       
+               }
+               function oldScanSubFolders()
+               {
+                       %path=$0
+                       %parent_node=$1
+                       if ($1->%thisNodeCompleted!="-1"){
+                               if (!$1->%thisNodeCompleted){
+                                        %offset=0
+                                        $$->%cache[]=$file.ls(%path,f)
+                               }
+                               else
+                               %offset=$1->%thisNodeCompleted
+                               %len=$length($$->%cache[])
+                               $$->%count+=$(%len-%offset)
+                               for(%j=%offset;%j<%len;%j++){
+                                       if ($$->%cache[%j]) 
+                                       $$->$appendFile(%parent_node,$$->%cache[%j],$file.size(%path\/$$->%cache[%j]))
+                                       if (($hptimestamp-$$->%time)>$$->%time_available) break
+                               }
+                               if (%j==%len) {$1->%thisNodeCompleted=-1;$$->%cache[]=;}
+                               else $1->%thisNodeCompleted=$(%j+1)
+                       }
+                       if (($hptimestamp-$$->%time)>$$->%time_available) return $true
+                       %folders[]=$file.ls(%path,dn)
+                       %children[]=%parent_node->$children()
+                       %fl=$false
+                       %len=$length(%children[]);
+                       %i=0
+                       for (%ind=0;%ind<%folders[]#;%ind++) {
+                               if ((%folders[%ind]!="..") && (%folders[%ind]!=".")) {
+                                       if (%i<%len) %node=%children[%i]
+                                       else %node=$$->$addNode(%folders[%ind],%parent_node)
+                                       if (!%node->%allSubFoldersScanned || %node->%extraDirPath){
+                                               if (!$$->$oldScanSubFolders(%path%folders[%ind]"/",%node)){
+                                                       %node->%allSubFoldersScanned=$true()
+                                               }
+                                               else %fl=$true                  
+                                       }
+                                       %i++
+                               }
+                               if (%fl) break
+                       }
+                       if (%fl) return $true
+               }
+               function fastScanSubFolders()
+               {
+                       %path=$0
+                       %parent_node=$1
+                       %children[]=%parent_node->$children()
+                       %len=$length(%children[]);
+                       %folders[]=$file.ls(%path,dn)   
+                       if (!$1->%files_list[]#) {
+                               $1->%files_list[]<+$file.ls(%path,f)
+                               $$->%count+=$length($1->%files_list[])
+                               $1->%file_size[]<+$file.allSizes(%path)
+                               if (($hptimestamp-$$->%time)>$$->%time_available) return $true  
+                       }
+                       if ($length(%folders[])<2) return
+                       if (!%len) %start=2
+                       else{
+                               %start=$(2+%len-1)
+                               if ($$->$fastScanSubFolders(%path%folders[%start]"/",%children[$(%len-1)])) return $true
+                               %start++
+                       }
+                       for (%ind=%start;%ind<%folders[]#;%ind++) {
+                               if ($$->$fastScanSubFolders(%path%folders[%ind]"/",$$->$addNode(%folders[%ind],%parent_node))) {
+                                       %fl=$true
+                                       break
+                               }                       
+                       }
+                       if (%fl) return $true;
+               }
+               
+               function appendFile(node,file,size)
+               {                       
+                       $0->%files_list[]<+$1
+                       $0->%file_size[]<+$2
+               }
+       
+               function resetFlag()
+               {
+                       $$->$reset($$->%firstnode)
+               }
+               function reset()
+               {
+                       $0->%allSubFoldersScanned=
+                       $0->%thisNodeCompleted=
+                       %folders[]=$0->$children
+                       %len=$length(%folders[])
+                       for (%i=0;%i<%len;%i++;) $$->$reset(%folders[%i])
+               }
+                       
+               # metodo che si occupa di restituire la path completa "virtuale" del nodo stesso
+               # come parametro gli passiamo il "root" che indica la radice di questo ramo: può essere il root generale
+               # o in caso di triggers, una sezione specifica dell'albero
+               
+               function getVirtualFolderPath(node)
+               {
+                       %item=$0
+                       while(%item->$parent()->$parent()) {
+                               %path=%item->%text"\\"%path
+                               %item=%item->$parent()
+                       }
+                       return %path
+               }
+               
+               function getFolderById()
+               {
+                       return $$->$scanTreeFolder($$->%firstnode,$0)
+               }
+               
+               function scanTreeFolder()
+               {
+                       if ($0->%index==$1) return $0
+                       %folders[]=$0->$children()
+                       %len=$length(%folders[])
+                       for(%i=0;%i<%len;%i++){
+                               %found=$$->$scanTreeFolder(%folders[%i],$1) 
+                               if (%found) break
+                       } 
+                       NGLfserv::corefunctions::ngldebug ritorno %found
+                       return %found
+               }
+                       
+               function getFileById(node,id)
+               {
+                       %node=$0
+                       %fl=$1
+                       %child_idx=$str.rightfromfirst($str.lowcase(%fl),"|f")
+                       if (!$str.isnumber(%child_idx)) return $false
+                       if ((%child_idx>=$$->$filesCount(%node)) || (%child_idx<0)) return $false
+                       else return $$->$fileAt(%node,%child_idx)
+               }       
+               
+               function getFolderObjFromPath()
+               {
+                       %path=$0
+                       if ($1) %father=$1
+                       else %father=$$->%firstnode
+                       %index=0                
+                       while ($str.token(%index,"/",%path)){
+                               %found=$false
+                               %token= $str.token(%index,"/",%path) 
+                               %children[]=%father->$children()                
+                               for (%i=0;%i<$length(%children[]);%i++) {
+                                        if ($$->$text(%children[%i]) ==%token) {
+                                               %father=%children[%i]
+                                               %found=$true
+                                               break
+                                       }
+                               }
+                               if (!%found) return $false
+                               %index++
+                       }
+                       return %father
+               }
+       
+               function getLocalTriggerPath()
+               {
+                       %item=$0
+                       %path=%item->%text"/"
+                        while(%item!=$$) {
+                               %item=%item->$parent()
+                               if (%item->%text) %path=%item->%text"/"%path
+                       }
+                       return %path    
+               }
+               function getRealPath(node)
+               {
+                       
+                       %item=$0
+                       while((!%item->%extraDirPath) && (%item!=$$->%firstNode)) {
+                                       %path<+%item->%text"/"
+                                       %item=%item->$parent()
+                       }
+                       if (%item!=$$->%firstNode) return %item->%extraDirPath%path
+                       else return $$->%realTriggerPath%path
+               }
+       
+               internal function checkFolderExists()
+               {
+                       %children[]=$1->$children()
+                       for (%i=0;%i<$length(%children[]);%i++){
+                               if ($0==%children[%i]->%text) return  %children[%i]
+                       }
+                       return $false
+               }
+               
+               function filesList(node)
+               {
+                       return $0->%files_list[]
+               }
+               
+               function sizesList(node)
+               {
+                       return $0->%file_size[]
+               }
+                       
+               
+               
+               function filesCount(node)
+               {
+                       return $length($0->%files_list[])
+               }
+               
+               function somethingHasChanged()
+               {
+                       return $$->%changed
+               }
+               function setChanged
+               {
+                       $$->%changed=$0
+               }
+               function fileSizeAt(node,index)
+               {
+                       return $0->%file_size[$1]
+               }
+               function fileAt(node,index)
+               {
+                       return $0->%files_list[$1]
+               }
+               function fileIndex(node,file)
+               {
+                       for (%i=0;%i<$length($0->%files_list[]);%i++) {
+                               if ($0->%files_list[%i]==$1) return %i
+                       }
+                       return -1
+               }
+                       
+               function setText(node,text)
+               {
+                       $0->%text=$1
+               }
+               function text(node)
+               {
+                       return $0->%text
+               }
+               function isFileNotShared(node,file)
+               {
+                       if ($0->$parent()->%dirNotShared || $0->%filesNotShared{$0->%files_list[$1]}) return $true
+                       else return $false
+               }
+               function setFoldersNotShared(node)
+               {
+                       $0->%filesNotShared{}=
+                       %folder[]=$0->$children()
+                       %len=$length(%folder[])
+                       for(%i=0;%i<%len;%i++;){
+                               if (!%folder[%i]->%dirNotShared) $$->$setFoldersNotShared(%folder[%i])
+                       }       
+               }
+               function setFoldersShared(node)
+               {
+                       $0->%dirNotShared=
+                       $0->%filesNotShared{}=
+                       %folder[]=$0->$children()
+                       %len=$length(%folder[])
+                       for(%i=0;%i<%len;%i++;) $$->$setFoldersShared(%folder[%i])      
+               }
+               function  setFileNotShared(node,file)
+               {
+                       $0->%filesNotShared{$1}=$true
+               }
+               function  setFileShared(node,file)
+               {
+                       $0->%filesNotShared{$1}=
+                       if ($0->%filesNotShared{}#) $keys($0->%filesNotShared{})
+                       
+               }
+               function fileExists(node,file)
+               {
+                       %file=$str.lowcase($1)
+                       %node=$0
+                       %len=$$->$filesCount(%node)
+                       for (%i=0;%i<%len;%i++) if (%file==$str.lowcase($$->$fileAt(%node,%i))) return $$->$fileAt(%node,%i)
+                       return $false
+               }
+               function createDirFilesNotShared(node)
+               {
+                       for (%i=0;%i<$0->$count();%i++){
+                               %obj=$0->$item(%i)
+                               %fl=%obj->%files
+                               if (%fl) %files[]=$str.split("|",%fl)   
+                               %node=$$->$getFolderObjFromPath(%obj->%pathfromtrigger)
+                               if (!%fl)       %node->%dirNotShared=$true
+                               else foreach(%file,%files[]) if (%file) %node->%filesNotShared{%file}=$true
+                       }
+               }
+               function getNotSharedInfo()
+               {
+                       $$->%infons=$new(list,0)
+                       $$->$scanNotShared($$->%firstNode)
+                       return $$->%infons
+               }
+               function checkChildrenNotShared()
+               {
+                       %children[]=$0->$children()
+                       %len=$length(%children[])
+                       %cnt=0
+                       for (%i=0;%i<%len;%i++){
+                               if (%children[%i]->%dirNotShared) %cnt++
+                       }
+                       if (%cnt!=%i || ($length($0->%filesNotShared{})!=$length($0->%files_list[]))) return $false
+                       else return $true
+               }
+               function scanNotShared()
+               {
+                       %node=$0
+                       if ($length(%node->%filesNotShared{})){
+                               %folder=$new(object,$$->%infons)
+                               %folder->%pathfromtrigger=$$->$getLocalTriggerPath(%node)               
+                               foreach(%file,$keys(%node->%filesNotShared{}))  %tmp=%tmp%file|
+                               %folder->%files=%tmp
+                               $$->%infons->$append(%folder)
+                       }
+                       %folder[]=%node->$children()
+                       %len=$length(%folder[])
+                       for (%i=0;%i<%len;%i++;){
+                               if (!%folder[%i]->%dirNotShared) $$->$scanNotShared(%folder[%i])
+                               else{
+                                       %node=%folder[%i]
+                                       %dir=$new(object,$$->%infons)
+                                       %dir->%pathfromtrigger=$$->$getLocalTriggerPath(%node)
+                                       $$->%infons->$append(%dir)
+                               }
+                       }
+               }
+               function saveNotSharedInfo
+               {
+                       $$->%c=$0
+                       $$->%ns=0       
+                       $$->$scanTreeForNotShared($$->%firstNode)
+                       %ret=$$->%ns
+                       $$->%c=
+                       $$->%ns=
+                       return %ret
+               }
+               function scanTreeForNotShared()
+               {
+                       %node=$0
+                       if ($length(%node->%filesNotShared{})){
+                               config.setsection $$->%c notshared$$->%ns
+                               $$->%ns++
+                               config.write $$->%c pathfromtrigger $$->$getLocalTriggerPath(%node)
+                               foreach(%file,$keys(%node->%filesNotShared{}))  %tmp=%tmp%file|
+                               config.write $$->%c files %tmp
+                               NGLfserv::corefunctions::ngldebug files notshared of %node->%text are %tmp
+                       }
+                       %folder[]=%node->$children()
+                       %len=$length(%folder[])
+                       for (%i=0;%i<%len;%i++;){
+                               if (!%folder[%i]->%dirNotShared) $$->$scanTreeForNotShared(%folder[%i])
+                               else{
+                                       NGLfserv::corefunctions::ngldebug completamente non sharata %folder[%i]->%text
+                                       config.setsection $$->%c notshared$$->%ns
+                                       $$->%ns++
+                                       %node=%folder[%i]
+                                       config.write $$->%c pathfromtrigger $$->$getLocalTriggerPath(%node)
+                               }
+                       }
+               }
+       }
+}
+
index 655cacc298fae2314e9ce4adc5b396936d3f5855..611c0bbb6805aab4b35361c473a310ce6e005fc9 100644 (file)
-alias(NGLfserv::config::load)\r
-{\r
-       if (!$classDefined(NGLfserver))\r
-               NGLfserv::classes::register\r
-               \r
-       %NGLfserver=$new(NGLfserver)\r
-       \r
-       %NglConfigPath=$file.localdir(config/scripts/)\r
-       \r
-       %c = $config.open("NGLfserv.kvc","r")\r
-       config.setsection %c general\r
-       \r
-       // maximum sends\r
-       %MaxSends=$config.read(%c,"MaxSends",2)\r
-       \r
-       // each users maximum sends\r
-       %EachSends=$config.read(%c,"EachSends",1)\r
-       \r
-       // maximum queues\r
-       %MaxQueues=$config.read(%c,"MaxQueues",10)\r
-       \r
-       // each users maximum queues\r
-       %EachQueues=$config.read(%c,"EachQueues",2)\r
-       \r
-       // Flag enable/disable fserv\r
-       %FservActive=$config.read(%c,"FservActive","ON")\r
-       \r
-       // Max time of the shell\r
-       %MaxShellLife=$config.read(%c,"MaxShellLife",120000)\r
-       \r
-       // Max time of user's idle time\r
-       %MaxUserIdle=$config.read(%c,"MaxUserIdle",45000)\r
-       \r
-       // Max find results\r
-       %FindMsg=$config.read(%c,"FindMsg",5)\r
-       \r
-       // Flag for enabling/disabling DccReverse send\r
-       %DccReverse=$config.read(%c,"DccReverse",0)\r
-       \r
-       // Colors\r
-       %NGLc1=$config.read(%c,"NGLc1")\r
-       %NGLc2=$config.read(%c,"NGLc2")\r
-       \r
-       if (%NGLc1=="" || %NGLc2=="") {\r
-               %NGLc1=$(2+$rand(13))\r
-               %NGLc2=$(2+$rand(13))\r
-               while(%NGLc1==%NGLc2)\r
-                       %NGLc2=$(2+$rand(13))\r
-       }\r
-       \r
-       // Maximum resends\r
-       %MaxResends=$config.read(%c,"MaxResends",3)\r
-       \r
-       // Instant send size\r
-       %InstantSendSize=$config.read(%c,"InstantSendSize",1048576)\r
-       \r
-       // Resend interval\r
-       %ResendInterval=$config.read(%c,"ResendInterval",10000)\r
-       \r
-       // Priority Type\r
-       %PriorityType = $config.read(%c,"PriorityType",0)\r
-       \r
-       // Maximum cache dimension\r
-       %MaxCacheFind=$config.read(%c,"MaxCacheFind",50)\r
-       \r
-       // Statistics\r
-       %NGLSentBytes = $config.read(%c,"NGLSentBytes",0.0)\r
-       %NGLSentFiles = $config.read(%c,"NGLSentFiles",0)\r
-       \r
-       // MaxSessions\r
-       %MaxSessions = $config.read(%c,"MaxSessions",5)\r
-       \r
-       // LoadSendDelay \r
-       %LoadSendsDelay = $config.read(%c,"LoadSendsDelay",60000)\r
-\r
-       // NGLRespondToNGLVersion\r
-       %NGLRespondToNGLVersion = $config.read(%c,"NGLRespondToNGLVersion",$true)\r
-\r
-       %G_NGLdebug=$config.read(%c,"NGLdebug",0)\r
-       \r
-       %CloneDetection=$config.read(%c,"CloneDetection",$true)\r
-       \r
-       %triggersnumber=$config.read(%c,Triggersnumber)\r
-       // moving to first trigger\r
-       \r
-       NGLfserv::corefunctions::ngldebug triggers to load %triggersnumber\r
-       %nochannel=$true\r
-       %cnt=0\r
-       %total=0\r
-       // while there are triggers\r
-       while(%total!=%triggersnumber){\r
-               config.setsection %c TRIGGER%cnt\r
-               if ($config.read(%c,"triggername")){\r
-                       %total++\r
-                       NGLfserv::corefunctions::ngldebug reading trigger $config.read(%c,"triggername")\r
-                       // trigger's name\r
-                       %triggername=$config.read(%c,"triggername")\r
-                       %welcomemessage=$config.read(%c,"welcomemessage")\r
-                       %password=$config.read(%c,"password")\r
-                       // loading trigger folder structure\r
-       \r
-                       %Triggers{%triggername}=$new(NGLfserv::classes::trigger,0)\r
-                       %Triggers{%triggername}->$setName(%triggername)\r
-                       %Triggers{%triggername}->%welcomeMessage=%welcomemessage\r
-                       %Triggers{%triggername}->%password=%password\r
-                       %chan=0\r
-               // searching for trigger's channels\r
-                       while ($config.read(%c,"channel"%chan)) {\r
-                               %nochannel=$false\r
-                               %channelname=$config.read(%c,"channel"%chan)\r
-                               %channel=$NGLfserv::corefunctions::channels(a,%channelname,%triggername)\r
-                               // settings triggertype and prioritytype\r
-                               %Triggers{%triggername}->$getChannel(%channelname)->$setTriggerType($config.read(%c,%channelname"triggertype"))\r
-                               %Triggers{%triggername}->$getChannel(%channelname)->$setAccessType($config.read(%c,%channelname"accesstype"))\r
-                               %Triggers{%triggername}->$getChannel(%channelname)->$setAccessByPswd($config.read(%c,"UsePswd",$false))\r
-                               %chan++\r
-                       }\r
-               }\r
-               %cnt++\r
-       }\r
-       \r
-       if (!$length(%Triggers{})) return\r
-       if (!%nochannel) {\r
-               config.setsection %c channelsgeneraloptions\r
-               foreach(%channel,$keys(%FservChannels{})) {\r
-                       %FservChannels{%channel}->$setRespToList($config.read(%c,"%channel"respondtolist))\r
-                       %FservChannels{%channel}->$setRespToFind($config.read(%c,"%channel"respondtofind))\r
-                       %FservChannels{%channel}->$setRespToMyQueues($config.read(%c,"%channel"respondtomyqueues))\r
-                       %FservChannels{%channel}->$setUseQuickGet($config.read(%c,"%channel"usequickget))\r
-                       %FservChannels{%channel}->$setDisplayNoOccurrenceFound($config.read(%c,"%channel"displayNoOccurrenceFound))\r
-                       %FservChannels{%channel}->$setMultipleResultsPerLine($config.read(%c,"%channel"multipleResultsPerLine))\r
-               }\r
-       }\r
-       config.close %c\r
-       %Asyncio=$new(NGLfserv::classes::asynchLoad)\r
-       foreach(%trigger,$keys(%Triggers{})){\r
-               %c = $config.open("NGLfservtriggertree"%trigger".kvc",rw)\r
-               config.setsection %c general\r
-               debug add $config.read(%c,"realTriggerPath")\r
-               if ($file.exists($config.read(%c,"realTriggerPath"))){\r
-                       %Triggers{%trigger}->%c=%c\r
-                       %add=$true\r
-                        %Asyncio->$addtrigger(%Triggers{%trigger})\r
-                        %Triggers{%trigger}->$setRealTriggerPath($config.read(%c,"realTriggerPath"))\r
-               }\r
-               %extradirs=$config.read(%c,"extradirs",0)\r
-               %i=0\r
-               while (%i<%extradirs){\r
-                       config.setsection %c extradir%i\r
-                       //config.setsection %c %keylist[%i]\r
-                       %extradirpath=$config.read(%c,"extradirpath")\r
-                       debug checking extradir %extradirpath\r
-                       if ($file.exists(%extradirpath)){\r
-                               %pathFromTrigger=$config.read(%c,"pathFromTrigger")\r
-                               %Triggers{%trigger}->$appendExtraDir(%extradirpath,%pathFromTrigger)\r
-                       }\r
-                       else{\r
-                               NGLfserv::corefunctions::ngldebug la dir $config.read(%c,"extradirpath") non esiste !\r
-                               config.clearsection %c extradir%i\r
-                       }\r
-                       %i++\r
-               }\r
-       }\r
-       if (!%Asyncio->$start()) delete %Asyncio\r
-       else return\r
-       // FIX ME\r
-       if (%Asyncio->$start())\r
-               %G_fserverbusyhandler->$setAliasCallback("NGLfserv::config::loadSendAndQueues")\r
-       else delete %Asyncio\r
-}\r
-\r
+alias(NGLfserv::config::load)
+{
+               if (!$classDefined(NGLfserver))
+                       NGLfserv::classes::register
+                       
+               %NGLfserver=$new(NGLfserver)
+               
+               %NglConfigPath=$file.localdir(config/scripts/)
+               
+               %c = $config.open("NGLfserv.kvc","r")
+               config.setsection %c general
+               
+               // maximum sends
+               %MaxSends=$config.read(%c,"MaxSends",2)
+               
+               // each users maximum sends
+               %EachSends=$config.read(%c,"EachSends",1)
+               
+               // maximum queues
+               %MaxQueues=$config.read(%c,"MaxQueues",10)
+               
+               // each users maximum queues
+               %EachQueues=$config.read(%c,"EachQueues",2)
+               
+               // Flag enable/disable fserv
+               %FservActive=$config.read(%c,"FservActive","ON")
+               
+               // Max time of the shell
+               %MaxShellLife=$config.read(%c,"MaxShellLife",120000)
+               
+               // Max time of user's idle time
+               %MaxUserIdle=$config.read(%c,"MaxUserIdle",45000)
+               
+               // Max find results
+               %FindMsg=$config.read(%c,"FindMsg",5)
+               
+               // Flag for enabling/disabling DccReverse send
+               %DccReverse=$config.read(%c,"DccReverse",0)
+               
+               // Colors
+               %NGLc1=$config.read(%c,"NGLc1")
+               %NGLc2=$config.read(%c,"NGLc2")
+               
+               if (%NGLc1=="" || %NGLc2=="") {
+                       %NGLc1=$(2+$rand(13))
+                       %NGLc2=$(2+$rand(13))
+                       while(%NGLc1==%NGLc2)
+                               %NGLc2=$(2+$rand(13))
+               }
+               
+               // Maximum resends
+               %MaxResends=$config.read(%c,"MaxResends",3)
+               
+               // Instant send size
+               %InstantSendSize=$config.read(%c,"InstantSendSize",1048576)
+               
+               // Resend interval
+               %ResendInterval=$config.read(%c,"ResendInterval",10000)
+               
+               // Priority Type
+               %PriorityType = $config.read(%c,"PriorityType",0)
+               
+               // Maximum cache dimension
+               %MaxCacheFind=$config.read(%c,"MaxCacheFind",50)
+               
+               // Statistics
+               %NGLSentBytes = $config.read(%c,"NGLSentBytes",0.0)
+               %NGLSentFiles = $config.read(%c,"NGLSentFiles",0)
+               
+               // MaxSessions
+               %MaxSessions = $config.read(%c,"MaxSessions",5)
+               
+               // LoadSendDelay 
+               %LoadSendsDelay = $config.read(%c,"LoadSendsDelay",60000)
+       
+               // NGLRespondToNGLVersion
+               %NGLRespondToNGLVersion = $config.read(%c,"NGLRespondToNGLVersion",$true)
+       
+               %G_NGLdebug=$config.read(%c,"NGLdebug",0)
+               
+               %CloneDetection=$config.read(%c,"CloneDetection",$true)
+               
+               %triggersnumber=$config.read(%c,Triggersnumber)
+               // moving to first trigger
+               
+               NGLfserv::corefunctions::ngldebug triggers to load %triggersnumber
+               %nochannel=$true
+               %cnt=0
+               %total=0
+               // while there are triggers
+               while(%total!=%triggersnumber){
+                       config.setsection %c TRIGGER%cnt
+                       if ($config.read(%c,"triggername")){
+                               %total++
+                               NGLfserv::corefunctions::ngldebug reading trigger $config.read(%c,"triggername")
+                               // trigger's name
+                               %triggername=$config.read(%c,"triggername")
+                               %welcomemessage=$config.read(%c,"welcomemessage")
+                               %password=$config.read(%c,"password")
+                               // loading trigger folder structure
+               
+                               %Triggers{%triggername}=$new(NGLfserv::classes::trigger,0)
+                               %Triggers{%triggername}->$setName(%triggername)
+                               %Triggers{%triggername}->%welcomeMessage=%welcomemessage
+                               %Triggers{%triggername}->%password=%password
+                               %chan=0
+                       // searching for trigger's channels
+                               while ($config.read(%c,"channel"%chan)) {
+                                       %nochannel=$false
+                                       %channelname=$config.read(%c,"channel"%chan)
+                                       %channel=$NGLfserv::corefunctions::channels(a,%channelname,%triggername)
+                                       // settings triggertype and prioritytype
+                                       %Triggers{%triggername}->$getChannel(%channelname)->$setTriggerType($config.read(%c,%channelname"triggertype"))
+                                       %Triggers{%triggername}->$getChannel(%channelname)->$setAccessType($config.read(%c,%channelname"accesstype"))
+                                       %Triggers{%triggername}->$getChannel(%channelname)->$setAccessByPswd($config.read(%c,"UsePswd",$false))
+                                       %chan++
+                               }
+                       }
+                       %cnt++
+               }
+               
+               if (!$length(%Triggers{})) return
+               if (!%nochannel) {
+                       config.setsection %c channelsgeneraloptions
+                       foreach(%channel,$keys(%FservChannels{})) {
+                               %FservChannels{%channel}->$setRespToList($config.read(%c,"%channel"respondtolist))
+                               %FservChannels{%channel}->$setRespToFind($config.read(%c,"%channel"respondtofind))
+                               %FservChannels{%channel}->$setRespToMyQueues($config.read(%c,"%channel"respondtomyqueues))
+                               %FservChannels{%channel}->$setUseQuickGet($config.read(%c,"%channel"usequickget))
+                               %FservChannels{%channel}->$setDisplayNoOccurrenceFound($config.read(%c,"%channel"displayNoOccurrenceFound))
+                               %FservChannels{%channel}->$setMultipleResultsPerLine($config.read(%c,"%channel"multipleResultsPerLine))
+                       }
+               }
+               config.close %c
+               %Asyncio=$new(NGLfserv::classes::asynchLoad)
+               foreach(%trigger,$keys(%Triggers{})){
+                       %c = $config.open("NGLfservtriggertree"%trigger".kvc",rw)
+                       config.setsection %c general
+                       if ($file.exists($config.read(%c,"realTriggerPath"))){
+                               %Triggers{%trigger}->%c=%c
+                               %add=$true
+                                %Asyncio->$addtrigger(%Triggers{%trigger})
+                                %Triggers{%trigger}->$setRealTriggerPath($config.read(%c,"realTriggerPath"))
+                       }
+                       %extradirs=$config.read(%c,"extradirs",0)
+                       %i=0
+                       while (%i<%extradirs){
+                               config.setsection %c extradir%i
+                               //config.setsection %c %keylist[%i]
+                               %extradirpath=$config.read(%c,"extradirpath")
+                               if ($file.exists(%extradirpath)){
+                                       %pathFromTrigger=$config.read(%c,"pathFromTrigger")
+                                       %Triggers{%trigger}->$appendExtraDir(%extradirpath,%pathFromTrigger)
+                               }
+                               else{
+                                       NGLfserv::corefunctions::ngldebug la dir $config.read(%c,"extradirpath") non esiste !
+                                       config.clearsection %c extradir%i
+                               }
+                               %i++
+                       }
+               }
+               if (!%Asyncio->$start()) delete %Asyncio
+               else return
+               // FIX ME
+               if (%Asyncio->$start())
+                       %G_fserverbusyhandler->$setAliasCallback("NGLfserv::config::loadSendAndQueues")
+               else delete %Asyncio
+}
+
index 42352b3470af7d8747ad1cd2cf1725c480b03582..af67bb04034c919b949560c48a668c463257cf20 100644 (file)
@@ -4,9 +4,7 @@ alias(NGLfserv::config::saveTree)
                if (%trigger->$somethingHasChanged){
                        %c = $config.open("NGLfservtriggertree"%trigger->$triggerName()".kvc",w)
                        %i=0
-                       debug count extra dir trigger %trigger->$triggerName %trigger->$extraDirsCount()
                        while (%i<%trigger->$extraDirsCount()){
-                               debug 
                                config.setsection %c extradir%i
                                config.write %c extradirpath %trigger->$extraDir(%i)->%extraDirPath
                                config.write %c pathfromtrigger %trigger->$extraDir(%i)->%pathFromTrigger