TimeManager
Macros | Functions | Variables
unoccupied.c File Reference

空き時間のスケジュールを作成するコマンドに関する実装。 More...

#include "../include/unoccupied.h"
#include <assert.h>
#include <limits.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include "../include/common.h"

Macros

#define DEFAULT_RANGE   3600
 
#define EXIT_NOT_FOUND   3
 

Functions

static int generate_unoccupied_sched (const char *shm_name, time_t begin, unsigned int range, struct schedule *sched)
 指定された条件から、空き時間のスケジュールを作成する。 More...
 
static int output_input ()
 stdinの内容をstdoutに受け流す。 More...
 
static int output_schedule (struct schedule *in, struct schedule *uo)
 inにuoの値を反映したスケジュールをstdoutに出力する。 More...
 
static void print_usage ()
 ヘルプをstderrに出力する。
 
static int parse_arguments (int argc, char **argv, char *shm_name, int *opt_d, time_t *begin, unsigned int *range, int *verbose)
 コマンドライン引数を解析する。 More...
 
static int read_schedule (struct schedule *sched)
 stdinからスケジュールを読み込む。スケジュールはバリデートされる。 More...
 
int unoccupied (int argc, char *argv[])
 空き時間のスケジュールを作成し、stdinから読み込んだスケジュールに反映 して、stdoutに出力する。 More...
 

Variables

static int verbose = 0
 

Detailed Description

空き時間のスケジュールを作成するコマンドに関する実装。

Macro Definition Documentation

#define DEFAULT_RANGE   3600

空き時間を検索する範囲の初期値(sec)

#define EXIT_NOT_FOUND   3

空き時間が見つからない場合の戻り値

Function Documentation

static int generate_unoccupied_sched ( const char *  shm_name,
time_t  begin,
unsigned int  range,
struct schedule sched 
)
static

指定された条件から、空き時間のスケジュールを作成する。

Parameters
[in]shm_nameデータベース名。
[in]begin開始時刻(time_t)。
[in]range検索範囲(sec)。
[out]sched作成したスケジュールが反映される。
Returns
成功時は0、失敗時には-1、空き時間が見つからない場合は1を返す。
static int output_input ( )
static

stdinの内容をstdoutに受け流す。

Returns
成功時は0、失敗時には-1を返す。
static int output_schedule ( struct schedule in,
struct schedule uo 
)
static

inにuoの値を反映したスケジュールをstdoutに出力する。

inのduration値が0以外の場合は、uoのduration値を反映しない。

Parameters
[in]instdinから読み込んだスケジュール。
[in]uo反映する空き時間のスケジュール。
Returns
成功時は0、inのduration値がuoのduration値より大きい場合は1を返す。
static int parse_arguments ( int  argc,
char **  argv,
char *  shm_name,
int *  opt_d,
time_t *  begin,
unsigned int *  range,
int *  verbose 
)
static

コマンドライン引数を解析する。

Parameters
[in]argcargc値
[in]argvargv値
[out]shm_name'-i'オプション(id値)が反映される。
[out]opt_d'-d'オプション(データベース番号)が指定された場合、1が設定される。
[out]begin'-b'オプション(検索開始時刻(time_t))の値が反映される。
[out]range'-r'オプション(空き時間を検索する範囲(sec))の値が反映される。
[out]verbose'-v'オプション(verboseモード)の値が反映される。
Returns
成功時は0、'h'オプションが指定された場合は1、不正な値が与えられた場 合は2を返す。
static int read_schedule ( struct schedule sched)
static

stdinからスケジュールを読み込む。スケジュールはバリデートされる。

Parameters
[out]sched読み込んだスケジュールが反映される。
Returns
成功時は0、失敗時には-1、スケジュールが不正な場合は1を返す。
int unoccupied ( int  argc,
char *  argv[] 
)

空き時間のスケジュールを作成し、stdinから読み込んだスケジュールに反映 して、stdoutに出力する。

  • 入力されたスケジュールの継続時間が、作成した空き時間のスケジュールの継続時 間より大きい場合は、3を返す。
  • 入力されたスケジュールの継続時間が0以外の場合は、作成した空き時間のスケジ ュールの継続時間を反映しない。
  • デフォルトの検索開始時刻は、プログラムが実行された時刻。
  • デフォルトの検索範囲は3600秒。
Parameters
[in]argcargc値
[in]argvargv値
Returns
成功時は0、失敗時には1、使用方法に誤りがある場合は2、空き時間が見つ からない場合は3を返す。