char mver1[16], mver2[16];
strncpy(mver1, ver1, sizeof(mver1) - 1);
+ mver1[sizeof(mver1) - 1] = '\0';
strncpy(mver2, ver2, sizeof(mver2) - 1);
+ mver2[sizeof(mver2) - 1] = '\0';
release_replace_rc(mver1);
release_replace_rc(mver2);
!strcmp(API_STATUS_STARTED, status);
}
+static void usage(const char *arg0)
+{
+ fprintf(stdout, "%s: Attended sysUpgrade CLI client\n", arg0);
+ fprintf(stdout, "Usage: auc [-b <branch>] [-B <ver>] [-c] %s[-f] [-h] [-r] [-y]\n",
+#ifdef AUC_DEBUG
+"[-d] "
+#else
+""
+#endif
+ );
+ fprintf(stdout, " -b <branch>\tuse specific release branch\n");
+ fprintf(stdout, " -B <ver>\tuse specific release version\n");
+ fprintf(stdout, " -c\t\tonly check if system is up-to-date\n");
+#ifdef AUC_DEBUG
+ fprintf(stdout, " -d\t\tenable debugging output\n");
+#endif
+ fprintf(stdout, " -f\t\tuse force\n");
+ fprintf(stdout, " -h\t\toutput help\n");
+ fprintf(stdout, " -r\t\tcheck only for release upgrades\n");
+ fprintf(stdout, " -F <fstype>\toverride filesystem type\n");
+ fprintf(stdout, " -y\t\tdon't wait for user confirmation\n");
+
+}
+
+
/* this main function is too big... todo: split */
int main(int args, char *argv[]) {
static struct blob_buf checkbuf, infobuf, reqbuf, imgbuf, upgbuf;
while (argc<args) {
if (!strncmp(argv[argc], "-h", 3) ||
!strncmp(argv[argc], "--help", 7)) {
- fprintf(stdout, "%s: Attended sysUpgrade CLI client\n", argv[0]);
- fprintf(stdout, "Usage: auc [-b <branch>] [-B <ver>] [-c] %s[-f] [-h] [-r] [-y]\n",
-#ifdef AUC_DEBUG
-"[-d] "
-#else
-""
-#endif
- );
- fprintf(stdout, " -b <branch>\tuse specific release branch\n");
- fprintf(stdout, " -B <ver>\tuse specific release version\n");
- fprintf(stdout, " -c\t\tonly check if system is up-to-date\n");
-#ifdef AUC_DEBUG
- fprintf(stdout, " -d\t\tenable debugging output\n");
-#endif
- fprintf(stdout, " -f\t\tuse force\n");
- fprintf(stdout, " -h\t\toutput help\n");
- fprintf(stdout, " -r\t\tcheck only for release upgrades\n");
- fprintf(stdout, " -F <fstype>\toverride filesystem type\n");
- fprintf(stdout, " -y\t\tdon't wait for user confirmation\n");
+ usage(argv[0]);
return 0;
}
rootfs_type, target_fstype);
if (request_branches(!(target_branch || target_version))) {
- rc=-ENETUNREACH;
+ rc=-ENODATA;
goto freeboard;
}
fprintf(stdout, "Available: %s %s\n", branch->version_number, branch->version_code);
- revcmp = openwrt_release_verrevcmp(revision, branch->version_code);
+ revcmp = verrevcmp(revision, branch->version_code);
if (revcmp < 0)
upg_check |= PKG_UPGRADE;
else if (revcmp > 0)
goto freebranches;
if (release_only && !(upg_check & PKG_UPGRADE)) {
+ fprintf(stderr, "Nothing to be updated. Use '-f' to force.\n");
rc=0;
goto freebranches;
}
goto freebranches;
};
+ if (!force && (upg_check & PKG_NOT_FOUND)) {
+ fprintf(stderr, "Not all installed packages found in remote lists. Use '-f' to force.\n");
+ rc=-ENOTRECOVERABLE;
+ goto freebranches;
+ };
+
if (check_only)
goto freebranches;