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
448d300f
Vérifiée
Valider
448d300f
rédigé
Il y a 4 ans
par
Kubat
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
MODULE: Download karas, but incorrect UTF-8 strings?
parent
a12dc31c
Branches
Branches contenant la validation
Étiquettes
Étiquettes contenant la validation
1 requête de fusion
!130
Resolve "Remove json-c"
Modifications
1
Afficher les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
src/module/module_repo.c
+24
-15
24 ajouts, 15 suppressions
src/module/module_repo.c
avec
24 ajouts
et
15 suppressions
src/module/module_repo.c
+
24
−
15
Voir le fichier @
448d300f
...
@@ -42,6 +42,7 @@ struct kara {
...
@@ -42,6 +42,7 @@ struct kara {
int
update_count
;
int
update_count
;
volatile
sqlite3
*
db
;
volatile
sqlite3
*
db
;
struct
module_repo_internal
*
repo
;
struct
module_repo_internal
*
repo
;
size_t
kara_dir_len
;
long
id
;
long
id
;
long
unix_timestamp
;
long
unix_timestamp
;
struct
kara_metadata
mdt
;
struct
kara_metadata
mdt
;
...
@@ -68,9 +69,8 @@ struct module_repo_internal {
...
@@ -68,9 +69,8 @@ struct module_repo_internal {
/* Craft a filename for newly downloaded karas. Arguments:
/* Craft a filename for newly downloaded karas. Arguments:
* - str: the destination string, the prefix, i.e. the kara_dir, is already here
* - str: the destination string, the prefix, i.e. the kara_dir, is already here
* - len: the length of the string, not its size (which is PATH_MAX)
* - kara: the kara structure, which contains all the data to create the filename */
* - kara: the kara structure, which contains all the data to create the filename */
void
(
*
craft_filename
)(
char
str
[
PATH_MAX
],
size_t
,
struct
kara
*
);
void
(
*
craft_filename
)(
char
str
[
PATH_MAX
],
struct
kara
*
);
/* Worker threads */
/* Worker threads */
// *INDENT-OFF*
// *INDENT-OFF*
...
@@ -129,19 +129,19 @@ __mkdir(const char *dir, unsigned int umask)
...
@@ -129,19 +129,19 @@ __mkdir(const char *dir, unsigned int umask)
}
}
static
inline
void
static
inline
void
__craft_filename_obfuscate
(
char
str
[
PATH_MAX
],
size_t
len
,
struct
kara
*
kara
)
__craft_filename_obfuscate
(
char
str
[
PATH_MAX
],
struct
kara
*
kara
)
{
{
/* Obfuscate filename */
/* Obfuscate filename */
safe_snprintf
(
str
+
len
,
PATH_MAX
-
len
,
"%ld.mkv"
,
kara
->
id
);
safe_snprintf
(
str
,
PATH_MAX
,
"%
s%
ld.mkv"
,
kara
->
database_filepath
,
kara
->
id
);
}
}
static
inline
void
static
inline
void
__craft_filename_non_obfuscate
(
char
str
[
PATH_MAX
],
size_t
len
,
struct
kara
*
kara
)
__craft_filename_non_obfuscate
(
char
str
[
PATH_MAX
],
struct
kara
*
kara
)
{
{
/* Not obfuscate filename, need to create directories, won't fail if not
/* Not obfuscate filename, need to create directories, won't fail if not
* possible. The program will fail later, when write will be attempted. */
* possible. The program will fail later, when write will be attempted. */
len
+
=
safe_snprintf
(
str
+
len
,
PATH_MAX
-
len
,
"%s/%s/%s/"
,
kara
->
mdt
.
category
,
size_t
len
=
safe_snprintf
(
str
,
PATH_MAX
,
"%s
%s
/%s/%s/"
,
kara
->
database_filepath
,
kara
->
mdt
.
language
,
kara
->
mdt
.
author_name
);
kara
->
mdt
.
category
,
kara
->
mdt
.
language
,
kara
->
mdt
.
author_name
);
__mkdir
(
str
,
0
);
__mkdir
(
str
,
0
);
if
(
access
(
str
,
R_OK
|
W_OK
))
if
(
access
(
str
,
R_OK
|
W_OK
))
LOG_ERROR
(
"REPO"
,
"No access in read / write for folder %s"
,
str
);
LOG_ERROR
(
"REPO"
,
"No access in read / write for folder %s"
,
str
);
...
@@ -311,7 +311,7 @@ __handle_got_json_dl(struct kara *kara, int current_id)
...
@@ -311,7 +311,7 @@ __handle_got_json_dl(struct kara *kara, int current_id)
safe_snprintf
(
kara
->
url
,
LKT_LINE_MAX
,
kara
->
repo
->
get_id_file
,
kara
->
id
);
safe_snprintf
(
kara
->
url
,
LKT_LINE_MAX
,
kara
->
repo
->
get_id_file
,
kara
->
id
);
LOG_INFO
(
"REPO"
,
"Start downloading kara %ld to %s"
,
kara
->
id
,
kara
->
filename
);
LOG_INFO
(
"REPO"
,
"Start downloading kara %ld to
:
%s"
,
kara
->
id
,
kara
->
filename
);
if
(
__download_kara
(
kara
->
url
,
kara
->
filename
,
true
))
{
if
(
__download_kara
(
kara
->
url
,
kara
->
filename
,
true
))
{
LOG_WARN
(
"REPO"
,
"Could not download kara %ld at path '%s'"
,
LOG_WARN
(
"REPO"
,
"Could not download kara %ld at path '%s'"
,
kara
->
id
,
kara
->
filename
);
kara
->
id
,
kara
->
filename
);
...
@@ -383,13 +383,19 @@ __handle_got_json_internal_callback(const char *key, const char *val, int comp,
...
@@ -383,13 +383,19 @@ __handle_got_json_internal_callback(const char *key, const char *val, int comp,
int
current_id
=
0
;
int
current_id
=
0
;
/* Timestamp and presence verification */
/* Timestamp and presence verification */
if
(
!
database_get_kara_path
(
kara
->
db
,
kara
->
id
,
kara
->
database_filepath
))
kara
->
repo
->
craft_filename
(
kara
->
filename
,
kara
);
LOG_DEBUG
(
"REPO"
,
"Generated filepath for kara %ld is: %s"
,
kara
->
id
,
kara
->
filename
);
if
(
!
database_get_kara_path
(
kara
->
db
,
kara
->
id
,
kara
->
filename
))
{
kara
->
repo
->
craft_filename
(
kara
->
filename
,
kara
);
goto
do_it
;
goto
do_it
;
}
/* Override calculated filename if it exists */
/* Override calculated filename if it exists */
size_t
db_fp_size
=
(
strlen
(
kara
->
database_filepath
)
+
1
)
*
sizeof
(
char
);
size_t
db_fp_size
=
(
strlen
(
kara
->
database_filepath
)
+
1
)
*
sizeof
(
char
);
memcpy
(
kara
->
filename
,
kara
->
database_filepath
,
db_fp_size
);
memcpy
(
kara
->
filename
,
kara
->
database_filepath
,
db_fp_size
);
/* Set filepath for kara */
filestamp
=
get_mtime
(
kara
->
filename
);
filestamp
=
get_mtime
(
kara
->
filename
);
if
(
!
(
filestamp
>
kara
->
unix_timestamp
))
if
(
!
(
filestamp
>
kara
->
unix_timestamp
))
goto
do_it
;
goto
do_it
;
...
@@ -426,16 +432,19 @@ __handle_got_json(volatile sqlite3 *db, struct module_repo_internal *repo, const
...
@@ -426,16 +432,19 @@ __handle_got_json(volatile sqlite3 *db, struct module_repo_internal *repo, const
"Can't get the mkvpropedit executable path"
,
NOTHING
);
"Can't get the mkvpropedit executable path"
,
NOTHING
);
/* Craft a folder path here, it will be used later */
/* Craft a folder path here, it will be used later */
size_t
kara_dir_len
=
strlen
(
repo
->
kara_dir
);
kara
.
kara_dir_len
=
strlen
(
repo
->
kara_dir
);
kara_dir_len
=
sizeof
(
char
)
*
(
kara_dir_len
+
1
);
kara
.
kara_dir_len
=
sizeof
(
char
)
*
(
kara
.
kara_dir_len
+
1
);
memcpy
(
kara
.
database_filepath
,
repo
->
kara_dir
,
kara_dir_len
);
if
(
kara
.
database_filepath
[
kara_dir_len
-
1
]
!=
'/'
)
{
memcpy
(
kara
.
database_filepath
,
repo
->
kara_dir
,
kara
.
kara_dir_len
);
memcpy
(
kara
.
filename
,
repo
->
kara_dir
,
kara
.
kara_dir_len
);
if
(
kara
.
database_filepath
[
kara
.
kara_dir_len
-
1
]
!=
'/'
)
{
strncat
(
kara
.
database_filepath
,
"/"
,
PATH_MAX
-
1
);
strncat
(
kara
.
database_filepath
,
"/"
,
PATH_MAX
-
1
);
kara
.
database_filepath
[
++
kara_dir_len
]
=
0
;
kara
.
database_filepath
[
++
kara
.
kara
_dir_len
]
=
0
;
}
}
/* Handle the json */
/* Handle the json */
LOG_INFO
(
"REPO"
,
"Starting to process json for repo %s"
,
repo
->
name
);
LOG_INFO
(
"REPO"
,
"Starting to process json for repo %s
, total of %ld karas
"
,
repo
->
name
,
len
);
json_parse
(
json
,
2
,
__handle_got_json_internal_callback
,
(
void
*
)
&
kara
);
json_parse
(
json
,
2
,
__handle_got_json_internal_callback
,
(
void
*
)
&
kara
);
LOG_INFO
(
"REPO"
,
"Updated %ld karas and ignored %ld karas, total is %ld"
,
LOG_INFO
(
"REPO"
,
"Updated %ld karas and ignored %ld karas, total is %ld"
,
kara
.
update_count
,
kara
.
ignored_count
,
len
);
kara
.
update_count
,
kara
.
ignored_count
,
len
);
...
...
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