db_lock(mdb);
if (type == VERT_LIST) {
Mmsg(mdb->cmd, "SELECT ClientId,Name,Uname,AutoPrune,FileRetention,"
- "FileRetention,JobRetention "
+ "JobRetention "
"FROM Client ORDER BY ClientId");
} else {
Mmsg(mdb->cmd, "SELECT ClientId,Name,FileRetention,JobRetention "
/* Select Jobs -- for counting */
Mmsg(query, select_job, edit_uint64(now - period, ed1),
- edit_int64(cr.ClientId, ed1));
+ edit_int64(cr.ClientId, ed2));
Dmsg1(050, "select sql=%s\n", query);
if (!db_sql_query(ua->db, query, file_count_handler, (void *)&del)) {
if (ua->verbose) {
db_sql_query(ua->db, query, file_delete_handler, (void *)&del);
for (i=0; i < del.num_ids; i++) {
- struct s_count_ctx cnt;
Dmsg1(050, "Delete JobId=%u\n", del.JobId[i]);
- Mmsg(query, cnt_File, edit_int64(del.JobId[i], ed1));
- cnt.count = 0;
- db_sql_query(ua->db, query, count_handler, (void *)&cnt);
- del.tot_ids += cnt.count;
Mmsg(query, del_File, edit_int64(del.JobId[i], ed1));
db_sql_query(ua->db, query, NULL, (void *)NULL);
/*
db_sql_query(ua->db, query, NULL, (void *)NULL);
Dmsg1(050, "Del sql=%s\n", query);
}
- edit_uint64_with_commas(del.tot_ids, ed1);
- edit_uint64_with_commas(del.num_ids, ed2);
- bsendmsg(ua, _("Pruned %s Files from %s Jobs for client %s from catalog.\n"),
- ed1, ed2, client->hdr.name);
+ edit_uint64_with_commas(del.num_ids, ed1);
+ bsendmsg(ua, _("Pruned Files from %s Jobs for client %s from catalog.\n"),
+ ed1, client->hdr.name);
bail_out:
db_unlock(ua->db);
return dest;
}
+/*
+ * Get character length of UTF-8 string
+ *
+ * Valid UTF-8 codes
+ * U-00000000 - U-0000007F: 0xxxxxxx
+ * U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
+ * U-00000800 - U-0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
+ * U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ * U-04000000 - U-7FFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ */
+int cstrlen(const char *str)
+{
+ uint8_t *p = (uint8_t *)str;
+ int len = 0;
+ while (*p) {
+ if ((*p & 0xC0) != 0xC0) {
+ p++;
+ len++;
+ continue;
+ }
+ if ((*p & 0xD0) == 0xC0) {
+ p += 2;
+ len++;
+ continue;
+ }
+ if ((*p & 0xF0) == 0xD0) {
+ p += 3;
+ len++;
+ continue;
+ }
+ if ((*p & 0xF8) == 0xF0) {
+ p += 4;
+ len++;
+ continue;
+ }
+ if ((*p & 0xFC) == 0xF8) {
+ p += 5;
+ len++;
+ continue;
+ }
+ if ((*p & 0xFE) == 0xFC) {
+ p += 6;
+ len++;
+ continue;
+ }
+ p++; /* Shouln't get here but must advance */
+ }
+ return len;
+}
+
#ifndef DEBUG
char *bstrncpy (char *dest, POOL_MEM &src, int maxlen);
char *bstrncat (char *dest, const char *src, int maxlen);
char *bstrncat (char *dest, POOL_MEM &src, int maxlen);
+int cstrlen (const char *str);
void *b_malloc (const char *file, int line, size_t size);
#ifndef DEBUG
void *bmalloc (size_t size);