fixed silent error in briskin5/index_wr.php and corrected version
[brisk.git] / web / Obj / brisk.phh
index 0dbb358..1aac984 100644 (file)
@@ -74,7 +74,7 @@ define(DBG_LMOP, 0x0800);
 define(DBG_TRAC, 0x1000);
 define(DBG_SHME, 0x2000);
 // NOTE: BRISK DEBUG must be a numerical constant, not the result of operations on symbols 
-define(BRISK_DEBUG, 0xffffffbf);
+define(BRISK_DEBUG, 0x0800);
 
 define(BRISK_SINGLE_DEBUG,0);
 define(BRISK_SINGLE_SESS, "");
@@ -136,12 +136,12 @@ $mlang_brisk = array( 'btn_backstand'=> array( 'it' => 'torna in piedi',
 $G_lng = langtolng($G_lang);
 
 $G_all_points = array( 11,10,4,3,2, 0,0,0,0,0 );
-$G_brisk_version = "3.5.5";
+$G_brisk_version = "3.6.3";
 
 /* MLANG: ALL THE INFO STRINGS IN brisk.phh */
-$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NOVITA\'</b>: quinta versione di test per la nuova gestione dei dati volatili, rivista gestione del ticker.',
+$root_wellarr = array( 'it' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NOVITA\'</b>: nuovo sistema di evidenziazione degli utenti registrati.',
                                        'Se vuoi iscriverti alla <a target="_blank" href="mailto:ml-briscola+subscribe@milug.org">Mailing List</a>, cliccala!' ),
-                       'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NEWS</b>: third test version for the new volatile data management, ticker management refactored.',
+                       'en' => array ( 'Brisk (Ver. '.$G_brisk_version.'), <b>NEWS</b>: usage of reader/writer locking instead of generic exclusive locking.',
                                        'If you want to subscribe our <a target="_blank" href="ml-briscola+subscribe@milug.org">Mailing List</a>, click it!' ) );
 
 $G_room_help = array( 'it' => '
@@ -284,9 +284,15 @@ Copyright 2006-2009 <a href=\\"mailto:brisk@alternativeoutput.it\\">Matteo Nasta
 <br><b>version '.$G_brisk_version.'</b><br><br>
 Copyright 2006-2009 <a href=\\"mailto:brisk@alternativeoutput.it\\">Matteo Nastasi</a> (aka mop)<br><br>');
 
+function mop_flush()
+{
+    ob_flush();
+    flush();
+}
+
 function file_lock($fname, $is_exclusive)
 {
-    if (($res = fopen($fname, "r+")) == FALSE) {
+    if (($res = @fopen($fname, "r+")) == FALSE) {
         return (FALSE);
     }
         
@@ -315,6 +321,9 @@ function webservers_check()
 {
     GLOBAL $G_webserver_max;
 
+    /* FIXME: check all procs expirations */
+    return (10);
+
     $ct = 0;
 
     $dh = opendir('/proc');
@@ -877,7 +886,7 @@ class User {
     if (validate_sess($this->sess)) {
       if (file_exists(PROXY_PATH) == FALSE)
         mkdir(PROXY_PATH, 0775, TRUE);
-      $fp = fopen(PROXY_PATH."/".$this->sess.".stat", 'w');
+      $fp = @fopen(PROXY_PATH."/".$this->sess.".stat", 'w');
       fwrite($fp, sprintf("%s\n",$this->stat));
       fclose($fp);
     }
@@ -1078,6 +1087,13 @@ class User {
       return (FALSE);
   }
 
+  function myname_innerHTML()
+  {
+      $class_id = ($this->flags & USER_FLAG_AUTH) + 1;
+      
+      return (sprintf('$("myname").innerHTML = "<span class=\"au%d\">%s</span>";', $class_id, 
+                      xcape($this->name,ENT_COMPAT,"UTF-8")));
+  }
 
 } // end class User
 
@@ -1326,9 +1342,8 @@ class Room {
     }
 
     $ret .= sprintf('subst = "%s";', $user->subst);
-    $itin = ($user->flags & USER_FLAG_AUTH ? "<i>" : "");
-    $itou = ($user->flags & USER_FLAG_AUTH ? "</i>" : "");
-    $ret .= sprintf('$("myname").innerHTML = "<b>%s%s%s</b>";', $itin, xcape($user->name), $itou);
+    $ret .= $user->myname_innerHTML();
+
     for ($i = 0 ; $i < TABLES_N ; $i++) {
 
       $ret .= $this->table_content($user, $i);
@@ -1569,9 +1584,7 @@ class Room {
        $ret .= $this->table_content($user_cur, $table_idx);
       
       if ($user->idx_get() == $i) {
-        $itin = ($user->flags & USER_FLAG_AUTH ? "<i>" : "");
-        $itou = ($user->flags & USER_FLAG_AUTH ? "</i>" : "");
-       $ret .= sprintf('$("myname").innerHTML = "<b>%s%s%s</b>: ";', $itin, xcape($user->name), $itou);
+          $ret .= $user->myname_innerHTML();
       }
       $user_cur->comm[$user_cur->step % COMM_N] = $ret;
       $user_cur->step_inc();
@@ -1793,7 +1806,7 @@ class Room {
 
           if ($user_cur->sess == '')
             continue;
-          if ($user_cur->name == $name_new)
+          if (strcasecmp($user_cur->name,$name_new) == 0)
             break;
           }
         if ($i <  MAX_PLAYERS) {
@@ -2148,7 +2161,7 @@ class Room {
 
     log_auth("XXX", sprintf("TROVATO A QUESTO PUNTO [%d] sess [%s] name [%s]", $idx, $sess, $name_new));
 
-    /* there is another user logged with your account and you and him have authenticated => che new user
+    /* there is another user logged with your account and you and him have authenticated => new user
        get the session of the old user */
     if ($ghost > -1 && $ghost_auth && ($authenticate != FALSE)) {
       /* swap session */
@@ -2240,7 +2253,7 @@ class Room {
               if (strcmp("", $this->user[$i]->sess) == 0) 
                 continue;
               
-              if (strcmp($this->user[$i]->name, $ghostname) == 0) {
+              if (strcasecmp($this->user[$i]->name, $ghostname) == 0) {
                 $ghostname = '';
                 break;
               }
@@ -2292,11 +2305,7 @@ class Room {
       if ($user_cur->stat == 'room') {
        $user_cur->comm[$user_cur->step % COMM_N] = "gst.st = ".($user_cur->step+1)."; ".$this->standup_content($user_cur);
        if ($user->idx_get() == $i) {
-          $itin = ($user->flags & USER_FLAG_AUTH ? "<i>" : "");
-          $itou = ($user->flags & USER_FLAG_AUTH ? "</i>" : "");
-
-         $user_cur->comm[$user_cur->step % COMM_N] .= sprintf('$("myname").innerHTML = "<b>%s%s%s</b>: ";', 
-                                                               $itin, xcape($user->name), $itou);
+          $user_cur->comm[$user_cur->step % COMM_N] .= $user->myname_innerHTML();
        }
        log_main("FROM STANDUP: NAME: ".$user_cur->name." SENDED: ".$user_cur->comm[$user_cur->step % COMM_N]);
        
@@ -2357,7 +2366,7 @@ class Room {
 
           for ($i = 0 ; $i < MAX_PLAYERS ; $i++) {
               if (($room->user[$i] = User::load_data($i, FALSE)) == FALSE) {
-                  log_crit("Bin5_user::load_data failed");
+                  log_crit("User::load_data failed");
                   break;
               }
           }
@@ -2462,25 +2471,14 @@ class Room {
 
   static function lock_data($is_exclusive)
   {
-      GLOBAL $sess; 
-      
-      //  echo "LOCK: ".FTOK_PATH."/main";
-      //  exit;
-      if (($tok = @ftok(FTOK_PATH."/main", "B")) == -1) {
-          return (FALSE);
-      }
-      // echo "FTOK ".$tok."<br>";
-      if (($res = sem_get($tok, ($is_exclusive ? 1 : LOCK_SHARE_MAX) )) == FALSE) {
-          return (FALSE);
-      }
-      if (sem_acquire($res)) {
+      if (($res = file_lock(FTOK_PATH."/main", $is_exclusive)) != FALSE) {
           self::$delta_t = microtime(TRUE);
           log_lock("LOCK   room         [".self::$delta_t."]");
-
+          
           return ($res);
       }
-      else
-          return (FALSE);
+
+      return (FALSE);
   }
   
   static function unlock_data($res)
@@ -2489,7 +2487,7 @@ class Room {
     
     log_lock("UNLOCK room         [".(microtime(TRUE) - (self::$delta_t))."]");
 
-    return (sem_release($res));
+    file_unlock($res);
   }
 
 
@@ -2660,7 +2658,7 @@ function log_mop($step, $log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_LMOP) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2686,7 +2684,7 @@ function log_only2($log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_ONL2) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2711,7 +2709,7 @@ function log_crit($log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_CRIT) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2736,7 +2734,7 @@ function log_only($log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_ONLY) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2761,7 +2759,7 @@ function log_main($log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_MAIN) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2786,7 +2784,7 @@ function log_rd($log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_READ) == 0)
         return;
 
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";    
@@ -2811,7 +2809,7 @@ function log_rd2($log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_REA2) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2836,8 +2834,8 @@ function log_send($log)
     
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_SEND) == 0)
         return;
-    
-    if (BRISK_DEBUG & DBG_TRAC) 
+
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)    
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2862,7 +2860,7 @@ function log_lock($log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_LOCK) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2887,7 +2885,7 @@ function log_wr($log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_WRIT) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2912,7 +2910,7 @@ function log_load($log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_LOAD) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2932,7 +2930,7 @@ function log_auth($sess, $log)
     if (( (BRISK_DEBUG | ($sess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_AUTH) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -2957,7 +2955,7 @@ function log_shme($log)
     if (( (BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_SHME) == 0)
         return;
     
-    if (BRISK_DEBUG & DBG_TRAC) 
+    if ((BRISK_DEBUG | ($ssess == BRISK_SINGLE_SESS ? BRISK_SINGLE_DEBUG : 0) ) & DBG_TRAC)
         $btrace = btrace_line(debug_backtrace());
     else
         $btrace = "";
@@ -3106,21 +3104,13 @@ class Warrant {
 
   static function lock_data($is_exclusive)
   {
-    GLOBAL $sess; 
-    
-    if (($tok = @ftok(FTOK_PATH."/warrant", "B")) == -1) {
-      return (FALSE);
-    }
-    // echo "FTOK ".$tok."<br>";
-    if (($res = sem_get($tok, ($is_exclusive ? 1 : LOCK_SHARE_MAX) )) == FALSE) {
-      return (FALSE);
-    }
-    if (sem_acquire($res)) {   
-        self::$delta_t = microtime(TRUE);
-        log_lock("LOCK   warrant      [".self::$delta_t."]");
-      return ($res);
-    }
-    else
+      if (($res = file_lock(FTOK_PATH."/warrant", $is_exclusive)) != FALSE) {
+          self::$delta_t = microtime(TRUE);
+          log_lock("LOCK   warrant      [".self::$delta_t."]");
+          
+          return ($res);
+      }
+
       return (FALSE);
   }
   
@@ -3130,7 +3120,7 @@ class Warrant {
     
     log_lock("UNLOCK warrant      [".(microtime(TRUE) - (self::$delta_t))."]");
 
-    return (sem_release($res));
+    file_unlock($res);
   }
 }
 
@@ -3139,22 +3129,13 @@ class Poll {
 
   static function lock_data($is_exclusive)
   {
-    GLOBAL $sess; 
-    
-    if (($tok = @ftok(FTOK_PATH."/poll", "B")) == -1) {
-      return (FALSE);
-    }
-    // echo "FTOK ".$tok."<br>";
-    if (($res = sem_get($tok, ($is_exclusive ? 1 : LOCK_SHARE_MAX) )) == FALSE) {
-      return (FALSE);
-    }
-    if (sem_acquire($res)) {
-        self::$delta_t = microtime(TRUE);
-        log_lock("LOCK   poll         [".self::$delta_t."]");
-      
-        return ($res);
-    }
-    else
+      if (($res = file_lock(FTOK_PATH."/poll", $is_exclusive)) != FALSE) {
+          self::$delta_t = microtime(TRUE);
+          log_lock("LOCK   poll         [".self::$delta_t."]");
+          
+          return ($res);
+      }
+
       return (FALSE);
   }
   
@@ -3164,7 +3145,7 @@ class Poll {
     
     log_lock("UNLOCK poll         [".(microtime(TRUE) - (self::$delta_t))."]");
     
-    return (sem_release($res));
+    file_unlock($res);
   }
 }