Hello Guys

I was trying to create a function to convert seconds and bytes to more
"human readable".
If I'm right, the file that shows information in bconsole is
src/cats/sql.c, function list_result.

How the function list_result didn't check the name of fields, I guess is
necessary to check the name of fields to implement this features, but I
don't know where can I start. Any tips?


if ( (strcasecmp(field->name, "VolRetention") == 0 ) ) {
  ...
}


###########################################################################################
#include "stdio.h"
#include "stdlib.h"
#include "math.h"

char* seconds_to_humanreadable(float seconds, char *buf);

int main (int argc, char *argv[]){
    char buf[32];
    float seconds;
    int i = 1;
    while( i < argc){
        seconds = atof(argv[i]);
        printf("%s\n", seconds_to_humanread( seconds, buf) );
        i++;
    }
} /* end main */


char* seconds_to_humanreadable(float seconds, char *buf) {
    if (seconds < 60) {
          sprintf(buf, "%.2f seconds", seconds);
    }
    else if (seconds >= 60 && seconds < 3600){
          sprintf(buf, "%.2f minutes", seconds/60);
    }
    else if (seconds >= 3600 && seconds < 86400){
          sprintf(buf, "%.2f hours", seconds/3600);
    }
    else if( seconds >= 86400 && seconds < 2628000){
          sprintf(buf, "%.2f days", seconds/86400);
    }
    else if( seconds >= 2628000 && seconds <= 31536000){
          sprintf(buf, "%.2f months", seconds/2628000);
    }
    else if(seconds > 31536000){
          sprintf(buf, "%.2f years", seconds/31536000);
    }
    else{
          sprintf(buf, "0");
    }
    return buf;
} /*end function */
###########################################################################################

#include "stdio.h"
#include "stdlib.h"
#include "math.h"
#include "string.h"

char* bytes_to_humanreadable(float bytes, char *buf);

int main (int argc, char *argv[]){
    char buf[32];
    float bytes;
    int i = 1;
    while( i < argc){
       bytes = atof(argv[i]);
       printf("%s\n", bytes_to_humanread( bytes, buf) );
       i++;
    } /* end while */
} /* end main */


char* bytes_to_humanreadable(float bytes, char *buf) {
    int i = 0;
    const char* unit[] = {" ", "KB", "MB", "GB", "TB", "PB", "EB", "ZB",
"YB", "BB"};

    while( true ){
       if ( bytes < 1024 ){
          sprintf(buf, "%.2f %s", bytes, unit[i]);
          return buf;
       }
       bytes = bytes / 1024;
       i++;
    } /* end while */
} /*end function */
###########################################################################################

Atenciosamente

*Nome **|* *Wanderlei Hüttel*
*Blog*  | http://www.huttel.com.br



2016-02-17 20:25 GMT-02:00 Heitor Faria <hei...@bacula.com.br>:

> Kern,
>
> Sorry for the dumb question but could not bconsole make the values
> conversion in similar way to this shell script bytes conversion snippet
> before printing?
>
> xargs -i echo 'scale=2; {}/1073741824' | bc
>
> May it would be a more database independent approach.
>
> Regards,
> ===========================================================================
>
> Heitor Medrado de Faria - LPIC-III | ITIL-F |  Bacula Systems Certified
> Administrator II
> Do you need Bacula training? <http://bacula.us/video-classes>
> http://bacula.us/video-classes/
> +55 61 8268-4220
> Site: <http://bacula.us>http://bacula.us FB: heitor.faria
> ===========================================================================
>
>
> Enviado por TypeApp <http://www.typeapp.com/r>
>
> Em 17 de fev de 2016, em 20:05, Kern Sibbald <k...@sibbald.com> escreveu:
>
>> Hello Ana (and Heitor),
>>
>> Please note that at the current time, the list command is generic, and
>> thus it only knows how to print character strings that have been
>> returned by the SQL engine.  Though there may be some way to tell SQL
>> that the result we get for expiresin is a "duration" (note: very
>> different from a date such as LastWritten), I do not know how to do it.
>>
>> Thus for the moment, we are limited to displaying SQL generated
>> character strings in the form that SQL gives them to us.
>>
>> The main point of the new expiresin field is that it is not zero, the
>> retention period has not expired.  If it is a big positive number
>> (number of seconds remaining before the volume expires), then the Volume
>> will not be recycled.
>>
>> Many people forget that the retention period *begins* from the
>> LastWritten time, which means that as long as you are writing on the
>> Volume, nothing will be expired.  Maybe devoting a bit of thought to
>> that particular point, and what would happen if we changed it, would
>> make retention periods easier to understand.
>>
>> Best regards,
>> Kern
>>
>> On 02/16/2016 07:19 PM, Ana Emília M. Arruda wrote:
>>
>>>  Hello Kern and Heitor,
>>>
>>>  I can see the ExpiresIn field in Bacula 7.4.0 version.
>>>  Maybe the ExpiresIn value could be more useful if displayed in the same
>>>  format as the LastWritten field.
>>>
>>>  Best regards,
>>>  Ana
>>>
>>>  On Tue, Feb 16, 2016 at 2:46 AM, Heitor Faria <hei...@bacula.com.br
>>>  <mailto:hei...@bacula.com.br>> wrote:
>>>
>>>  Recently I got tired of doing the mental gymnastics to see when Volumes
>>>>>>  will expire and with Eric's SQL help, we modified the list (and llist)
>>>>>>  media output to eliminate one or two of the columns in the case of list
>>>>>>  media, but to add an "expiresin" field, which makes it much easier to
>>>>>>  see when a volume will expire.
>>>>>>
>>>>>>  This code has been in the public git repository in Branch-7.4 along with
>>>>>>  a number of bug fixes since the 7.4.0 release.  If you are interested in
>>>>>>  simplifying the Volume expiration mind gymnastics you might checkout and
>>>>>>  try the new code.
>>>>>>
>>>>>>  By the way, I thought that the above feature was added after the 7.4.0
>>>>>>  release, but according to what I see in the repo, much to my surprise it
>>>>>>  should also be in the released 7.4.0 version.
>>>>>>
>>>>>>  I would be interested in any feedback.
>>>>>>
>>>>>
>>>>>  Hello, Kern: this feature is great and I'm thankful for it, but is there 
>>>>> a way
>>>>>  to make information human readable?
>>>>>
>>>>
>>>>  What do you mean?
>>>>
>>>>  Please show me what you currently see and what you prefer to see.
>>>>
>>>
>>>      Hello, Kern: sorry for being laconic.
>>>      When I mean "human readable" is in the sense of ls, df and other
>>>      Linux commands:
>>>
>>>      "-h, --human-readable
>>>      print sizes in human readable format (e.g., 1K 234M 2G)"
>>>
>>>      *What I see today:*
>>>
>>>      *list media pool=File
>>>      
>>> +---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>>>      | MediaId | VolumeName | VolStatus | Enabled | VolBytes      |
>>>      VolFiles | VolRetention | Recycle | Slot | InChanger | MediaType |
>>>      LastWritten         | ExpiresIn  |
>>>      
>>> +---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>>>      |       1 | Vol-0001   | Error     |       1 | 1,286,119,412 |
>>>         0 |   31,536,000 |       1 |    0 |         0 | File1     |
>>>      2015-10-21 23:57:35 | 21,428,702 |
>>>      
>>> +---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>>>
>>>      *What I think would make the user life easier:*
>>>
>>>      *list media pool=File human
>>>      
>>> +---------+------------+-----------+---------+----------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>>>      | MediaId | VolumeName | VolStatus | Enabled | VolBytes | VolFiles |
>>>      VolRetention | Recycle | Slot | InChanger | MediaType | LastWritten
>>>              | ExpiresIn  |
>>>      
>>> +---------+------------+-----------+---------+---------------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>>>      |       1 | Vol-0001   | Error     |       1 |  1,29 GB |        0
>>>      |   31,536,000 |       1 |    0 |         0 | File1     | 2015-10-21
>>>      23:57:35 | 248 days |
>>>      
>>> +---------+------------+-----------+---------+----------+----------+--------------+---------+------+-----------+-----------+---------------------+------------+
>>>
>>>  Best regards,
>>>>  Kern
>>>>
>>>
>>>      Regards,
>>>      --
>>> ------------------------------
>>>
>>>      Heitor Medrado de Faria - LPIC-III | ITIL-F | Bacula Systems
>>>      Certified Administrator II
>>>      Do you need Bacula training? http://bacula.us/video-classes/
>>>      +55 61 8268-4220 <tel:%2B55%2061%208268-4220>
>>>      Site: http://bacula.us FB: heitor.faria
>>> ------------------------------
>>>
>>>
>>> ------------------------------
>>>
>>>      Site24x7 APM Insight: Get Deep Visibility into Application Performance
>>>      APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
>>>      Monitor end-to-end web transactions and take corrective actions now
>>>      Troubleshoot faster and improve end-user experience. Signup Now!
>>>      http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
>>> ------------------------------
>>>
>>>      Bacula-users mailing list
>>>      Bacula-users@lists.sourceforge.net
>>>      <mailto:Bacula-users@lists.sourceforge.net>
>>>      https://lists.sourceforge.net/lists/listinfo/bacula-users
>>
>>
>>
>>
>
> ------------------------------------------------------------------------------
> Site24x7 APM Insight: Get Deep Visibility into Application Performance
> APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
> Monitor end-to-end web transactions and take corrective actions now
> Troubleshoot faster and improve end-user experience. Signup Now!
> http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
> _______________________________________________
> Bacula-users mailing list
> Bacula-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/bacula-users
>
>
------------------------------------------------------------------------------
Site24x7 APM Insight: Get Deep Visibility into Application Performance
APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month
Monitor end-to-end web transactions and take corrective actions now
Troubleshoot faster and improve end-user experience. Signup Now!
http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140
_______________________________________________
Bacula-users mailing list
Bacula-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bacula-users

Reply via email to