Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
lektor
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté GitLab
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Kubat
lektor
Validations
fc4200a8
Vérifiée
Valider
fc4200a8
rédigé
Il y a 5 ans
par
Kubat
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
Update stickers functions, a bit cleaner now
parent
1f287c9a
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion
!56
Search
Modifications
3
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
3 fichiers modifiés
inc/lektor/database.h
+11
-5
11 ajouts, 5 suppressions
inc/lektor/database.h
src/commands.c
+31
-31
31 ajouts, 31 suppressions
src/commands.c
src/database/stickers.c
+4
-6
4 ajouts, 6 suppressions
src/database/stickers.c
avec
46 ajouts
et
42 suppressions
inc/lektor/database.h
+
11
−
5
Voir le fichier @
fc4200a8
...
@@ -127,14 +127,20 @@ bool database_user_authentificate(sqlite3 *db, const char *password);
...
@@ -127,14 +127,20 @@ bool database_user_authentificate(sqlite3 *db, const char *password);
bool
database_user_add
(
sqlite3
*
db
,
const
char
*
username
,
const
char
*
password
);
bool
database_user_add
(
sqlite3
*
db
,
const
char
*
username
,
const
char
*
password
);
/* Stickers manipulations. */
/* Stickers manipulations. */
typedef
bool
(
*
database_sticker_callback_t
)(
void
*
args
,
const
char
*
sticker
,
const
char
*
type
,
struct
sticker_callback
{
int
uri
,
int
value
);
struct
lkt_state
*
srv
;
size_t
c
;
int
uri
;
int
value
;
const
char
*
name
;
bool
is_ok
;
bool
(
*
call
)(
void
*
args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
);
};
bool
database_sticker_create
(
sqlite3
*
db
,
const
char
*
name
);
bool
database_sticker_create
(
sqlite3
*
db
,
const
char
*
name
);
bool
database_sticker_delete
(
sqlite3
*
db
,
const
char
*
name
);
bool
database_sticker_delete
(
sqlite3
*
db
,
const
char
*
name
);
bool
database_sticker_delete_specify
(
sqlite3
*
sb
,
const
char
*
type
,
int
uri
,
bool
database_sticker_delete_specify
(
sqlite3
*
sb
,
const
char
*
type
,
int
uri
,
const
char
*
name
/* Can be null */
);
const
char
*
name
/* Can be null */
);
bool
database_sticker_list
(
sqlite3
*
db
,
const
char
*
type
,
void
*
args
,
database_
sticker_callback
_t
call
);
bool
database_sticker_list
(
sqlite3
*
db
,
const
char
*
type
,
struct
sticker_callback
*
call
);
bool
database_sticker_set
(
sqlite3
*
db
,
const
char
*
type
,
const
char
*
name
,
int
uri
,
int
value
);
bool
database_sticker_set
(
sqlite3
*
db
,
const
char
*
type
,
const
char
*
name
,
int
uri
,
int
value
);
bool
database_sticker_get
(
sqlite3
*
db
,
const
char
*
type
,
const
char
*
name
,
int
uri
,
void
*
args
,
bool
database_sticker_get
(
sqlite3
*
db
,
const
char
*
type
,
const
char
*
name
,
int
uri
,
struct
sticker_callback
*
call
);
database_sticker_callback_t
call
);
Ce diff est replié.
Cliquez pour l'agrandir.
src/commands.c
+
31
−
31
Voir le fichier @
fc4200a8
...
@@ -21,15 +21,6 @@
...
@@ -21,15 +21,6 @@
#define SELF_EXECUTABLE_FREEBSD "/proc/curproc/file"
#define SELF_EXECUTABLE_FREEBSD "/proc/curproc/file"
#define SELF_EXECUTABLE_SOLARIS "/proc/self/path/a.out"
#define SELF_EXECUTABLE_SOLARIS "/proc/self/path/a.out"
struct
_client_trace_t
{
struct
lkt_state
*
srv
;
size_t
c
;
int
uri
;
const
char
*
name
;
int
value
;
bool
is_ok
;
};
inline
bool
inline
bool
command_restart
(
struct
lkt_state
*
srv
,
size_t
c
)
command_restart
(
struct
lkt_state
*
srv
,
size_t
c
)
{
{
...
@@ -1025,10 +1016,12 @@ command_user_add(sqlite3 *db, char *argv[LKT_MESSAGE_ARGS_MAX])
...
@@ -1025,10 +1016,12 @@ command_user_add(sqlite3 *db, char *argv[LKT_MESSAGE_ARGS_MAX])
fprintf
(
stderr
,
" . command_user_add: Failed to add user %s
\n
"
,
argv
[
0
]);
fprintf
(
stderr
,
" . command_user_add: Failed to add user %s
\n
"
,
argv
[
0
]);
}
}
/* Stickers */
static
bool
static
bool
sticker_send_one_value
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
sticker_send_one_value
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
{
{
struct
_client_trace_t
*
args
=
(
struct
_client_trace_t
*
)
_args
;
struct
sticker_callback
*
args
=
(
struct
sticker_callback
*
)
_args
;
struct
lkt_message
*
out
;
struct
lkt_message
*
out
;
(
void
)
sticker
;
(
void
)
sticker
;
(
void
)
type
;
(
void
)
type
;
...
@@ -1043,7 +1036,7 @@ sticker_send_one_value(void *_args, const char *sticker, const char *type, int u
...
@@ -1043,7 +1036,7 @@ sticker_send_one_value(void *_args, const char *sticker, const char *type, int u
static
bool
static
bool
sticker_send_all
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
sticker_send_all
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
{
{
struct
_client_trace_t
*
args
=
(
struct
_client_trace_t
*
)
_args
;
struct
sticker_callback
*
args
=
(
struct
sticker_callback
*
)
_args
;
struct
lkt_message
*
out
;
struct
lkt_message
*
out
;
out
=
lkt_message_new
();
out
=
lkt_message_new
();
...
@@ -1056,7 +1049,7 @@ sticker_send_all(void *_args, const char *sticker, const char *type, int uri, in
...
@@ -1056,7 +1049,7 @@ sticker_send_all(void *_args, const char *sticker, const char *type, int uri, in
static
bool
static
bool
sticker_send_check_uri
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
sticker_send_check_uri
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
{
{
struct
_client_trace_t
*
args
=
(
struct
_client_trace_t
*
)
_args
;
struct
sticker_callback
*
args
=
(
struct
sticker_callback
*
)
_args
;
struct
lkt_message
*
out
;
struct
lkt_message
*
out
;
(
void
)
type
;
(
void
)
type
;
...
@@ -1072,7 +1065,7 @@ sticker_send_check_uri(void *_args, const char *sticker, const char *type, int u
...
@@ -1072,7 +1065,7 @@ sticker_send_check_uri(void *_args, const char *sticker, const char *type, int u
static
bool
static
bool
sticker_send_value_check_uri_name
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
sticker_send_value_check_uri_name
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
{
{
struct
_client_trace_t
*
args
=
(
struct
_client_trace_t
*
)
_args
;
struct
sticker_callback
*
args
=
(
struct
sticker_callback
*
)
_args
;
struct
lkt_message
*
out
;
struct
lkt_message
*
out
;
(
void
)
type
;
(
void
)
type
;
...
@@ -1089,7 +1082,7 @@ static bool
...
@@ -1089,7 +1082,7 @@ static bool
sticker_check_is_present_eq
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
sticker_check_is_present_eq
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
{
{
(
void
)
type
;
(
void
)
type
;
struct
_client_trace_t
*
args
=
(
struct
_client_trace_t
*
)
_args
;
struct
sticker_callback
*
args
=
(
struct
sticker_callback
*
)
_args
;
args
->
is_ok
|=
(
uri
==
args
->
uri
)
&&
!
strcasecmp
(
sticker
,
args
->
name
)
&&
(
value
==
args
->
value
);
args
->
is_ok
|=
(
uri
==
args
->
uri
)
&&
!
strcasecmp
(
sticker
,
args
->
name
)
&&
(
value
==
args
->
value
);
return
true
;
return
true
;
}
}
...
@@ -1098,7 +1091,7 @@ static bool
...
@@ -1098,7 +1091,7 @@ static bool
sticker_check_is_present_lt
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
sticker_check_is_present_lt
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
{
{
(
void
)
type
;
(
void
)
type
;
struct
_client_trace_t
*
args
=
(
struct
_client_trace_t
*
)
_args
;
struct
sticker_callback
*
args
=
(
struct
sticker_callback
*
)
_args
;
args
->
is_ok
|=
(
uri
==
args
->
uri
)
&&
!
strcasecmp
(
sticker
,
args
->
name
)
&&
(
value
<
args
->
value
);
args
->
is_ok
|=
(
uri
==
args
->
uri
)
&&
!
strcasecmp
(
sticker
,
args
->
name
)
&&
(
value
<
args
->
value
);
return
true
;
return
true
;
}
}
...
@@ -1107,7 +1100,7 @@ static bool
...
@@ -1107,7 +1100,7 @@ static bool
sticker_check_is_present_gt
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
sticker_check_is_present_gt
(
void
*
_args
,
const
char
*
sticker
,
const
char
*
type
,
int
uri
,
int
value
)
{
{
(
void
)
type
;
(
void
)
type
;
struct
_client_trace_t
*
args
=
(
struct
_client_trace_t
*
)
_args
;
struct
sticker_callback
*
args
=
(
struct
sticker_callback
*
)
_args
;
args
->
is_ok
|=
(
uri
==
args
->
uri
)
&&
!
strcasecmp
(
sticker
,
args
->
name
)
&&
(
value
>
args
->
value
);
args
->
is_ok
|=
(
uri
==
args
->
uri
)
&&
!
strcasecmp
(
sticker
,
args
->
name
)
&&
(
value
>
args
->
value
);
return
true
;
return
true
;
}
}
...
@@ -1121,12 +1114,13 @@ command_sticker_get(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS
...
@@ -1121,12 +1114,13 @@ command_sticker_get(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS
}
}
int
uri
=
atoi
(
argv
[
1
]);
/* FIXME: Use strtol. */
int
uri
=
atoi
(
argv
[
1
]);
/* FIXME: Use strtol. */
struct
_client_trace_t
args
=
{
struct
sticker_callback
callback
=
{
.
srv
=
srv
,
.
srv
=
srv
,
.
c
=
c
,
.
c
=
c
,
.
call
=
sticker_send_one_value
,
};
};
if
(
!
database_sticker_get
(
srv
->
db
,
argv
[
0
],
argv
[
2
],
uri
,
&
args
,
sticker_send_one_value
))
{
if
(
!
database_sticker_get
(
srv
->
db
,
argv
[
0
],
argv
[
2
],
uri
,
&
callback
))
{
fprintf
(
stderr
,
" . command_sticker_get: Failed to get sticker '%s' for object %s(%d)
\n
"
,
fprintf
(
stderr
,
" . command_sticker_get: Failed to get sticker '%s' for object %s(%d)
\n
"
,
argv
[
2
],
argv
[
0
],
uri
);
argv
[
2
],
argv
[
0
],
uri
);
return
false
;
return
false
;
...
@@ -1159,7 +1153,7 @@ command_sticker_set(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS
...
@@ -1159,7 +1153,7 @@ command_sticker_set(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARGS
bool
bool
command_sticker_list
(
struct
lkt_state
*
srv
,
size_t
c
,
char
*
argv
[
LKT_MESSAGE_ARGS_MAX
])
command_sticker_list
(
struct
lkt_state
*
srv
,
size_t
c
,
char
*
argv
[
LKT_MESSAGE_ARGS_MAX
])
{
{
struct
_client_trace_t
args
=
{
struct
sticker_callback
callback
=
{
.
srv
=
srv
,
.
srv
=
srv
,
.
c
=
c
,
.
c
=
c
,
};
};
...
@@ -1187,29 +1181,35 @@ command_sticker_list(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARG
...
@@ -1187,29 +1181,35 @@ command_sticker_list(struct lkt_state *srv, size_t c, char *argv[LKT_MESSAGE_ARG
goto
unknown
;
goto
unknown
;
just_list_all:
just_list_all:
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
args
,
sticker_send_all
);
callback
.
call
=
sticker_send_all
;
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
callback
);
simple_list_command:
simple_list_command:
args
.
uri
=
atoi
(
argv
[
1
]);
/* FIXME: Use strtol. */
callback
.
uri
=
atoi
(
argv
[
1
]);
/* FIXME: Use strtol. */
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
args
,
sticker_send_check_uri
);
callback
.
call
=
sticker_send_check_uri
;
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
callback
);
list_stickers_in_uri:
list_stickers_in_uri:
args
.
uri
=
atoi
(
argv
[
1
]);
/* FIXME: Use strtol. */
callback
.
uri
=
atoi
(
argv
[
1
]);
/* FIXME: Use strtol. */
args
.
name
=
argv
[
2
];
callback
.
name
=
argv
[
2
];
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
args
,
sticker_send_value_check_uri_name
);
callback
.
call
=
sticker_send_value_check_uri_name
;
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
callback
);
return
false
;
return
false
;
list_stickers_check_value:
list_stickers_check_value:
args
.
uri
=
atoi
(
argv
[
1
]);
/* FIXME: Use strtol. */
callback
.
uri
=
atoi
(
argv
[
1
]);
/* FIXME: Use strtol. */
args
.
value
=
atoi
(
argv
[
4
]);
/* FIXME: Use strtol. */
callback
.
value
=
atoi
(
argv
[
4
]);
/* FIXME: Use strtol. */
args
.
name
=
argv
[
2
];
callback
.
name
=
argv
[
2
];
switch
(
argv
[
3
][
0
])
{
switch
(
argv
[
3
][
0
])
{
case
'='
:
case
'='
:
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
args
,
sticker_check_is_present_eq
);
callback
.
call
=
sticker_check_is_present_eq
;
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
callback
);
case
'<'
:
case
'<'
:
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
args
,
sticker_check_is_present_lt
);
callback
.
call
=
sticker_check_is_present_lt
;
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
callback
);
case
'>'
:
case
'>'
:
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
args
,
sticker_check_is_present_gt
);
callback
.
call
=
sticker_check_is_present_gt
;
return
database_sticker_list
(
srv
->
db
,
argv
[
0
],
&
callback
);
default:
default:
return
0
;
return
0
;
}
}
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
src/database/stickers.c
+
4
−
6
Voir le fichier @
fc4200a8
...
@@ -71,8 +71,7 @@ error:
...
@@ -71,8 +71,7 @@ error:
}
}
bool
bool
database_sticker_list
(
sqlite3
*
db
,
const
char
*
type
,
void
*
args
,
database_sticker_list
(
sqlite3
*
db
,
const
char
*
type
,
struct
sticker_callback
*
call
)
database_sticker_callback_t
call
)
{
{
const
char
*
SQL
=
NULL
;
const
char
*
SQL
=
NULL
;
int
ret
=
false
,
uri
,
value
;
int
ret
=
false
,
uri
,
value
;
...
@@ -112,7 +111,7 @@ database_sticker_list(sqlite3 *db, const char *type, void *args,
...
@@ -112,7 +111,7 @@ database_sticker_list(sqlite3 *db, const char *type, void *args,
sticker
=
(
const
char
*
)
sqlite3_column_text
(
stmt
,
0
);
sticker
=
(
const
char
*
)
sqlite3_column_text
(
stmt
,
0
);
uri
=
sqlite3_column_int
(
stmt
,
1
);
uri
=
sqlite3_column_int
(
stmt
,
1
);
value
=
sqlite3_column_int
(
stmt
,
2
);
value
=
sqlite3_column_int
(
stmt
,
2
);
if
(
!
call
(
args
,
sticker
,
type
,
uri
,
value
))
if
(
!
call
->
call
(
call
,
sticker
,
type
,
uri
,
value
))
goto
end_loop
;
goto
end_loop
;
continue
;
continue
;
...
@@ -179,8 +178,7 @@ error:
...
@@ -179,8 +178,7 @@ error:
}
}
bool
bool
database_sticker_get
(
sqlite3
*
db
,
const
char
*
type
,
const
char
*
name
,
int
uri
,
void
*
args
,
database_sticker_get
(
sqlite3
*
db
,
const
char
*
type
,
const
char
*
name
,
int
uri
,
struct
sticker_callback
*
call
)
database_sticker_callback_t
call
)
{
{
const
char
*
SQL
=
NULL
;
const
char
*
SQL
=
NULL
;
sqlite3_stmt
*
stmt
;
sqlite3_stmt
*
stmt
;
...
@@ -212,7 +210,7 @@ database_sticker_get(sqlite3 *db, const char *type, const char *name, int uri, v
...
@@ -212,7 +210,7 @@ database_sticker_get(sqlite3 *db, const char *type, const char *name, int uri, v
switch
(
sqlite3_step
(
stmt
))
{
switch
(
sqlite3_step
(
stmt
))
{
case
SQLITE_ROW
:
case
SQLITE_ROW
:
value
=
sqlite3_column_int
(
stmt
,
1
);
value
=
sqlite3_column_int
(
stmt
,
1
);
if
(
!
call
(
args
,
name
,
type
,
uri
,
value
))
if
(
!
call
->
call
(
call
,
name
,
type
,
uri
,
value
))
goto
end_loop
;
goto
end_loop
;
continue
;
continue
;
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter