15 #define _RPMTS_INTERNAL
42 static void printHash(
const unsigned long long amount,
const unsigned long long total)
54 float pct = (total ? (((float) amount) / total) : 1.0);
58 if (isatty (STDOUT_FILENO)) {
64 fprintf(stdout,
"(%3d%%)", (
int)((100 * pct) + 0.5));
65 for (i = 0; i < (rpmcliHashesTotal + 6); i++)
66 (
void) putchar (
'\b');
72 (void) fflush(stdout);
77 if (isatty(STDOUT_FILENO)) {
85 fprintf(stdout,
" [%3d%%]", (
int)((100 * pct) + 0.5));
87 fprintf(stdout,
"\n");
89 (void) fflush(stdout);
95 const unsigned long long amount,
96 const unsigned long long total,
108 int flags = (int) ((
long)data);
111 const char * filename = (
const char *)key;
113 static FD_t fd = NULL;
119 if (filename == NULL || filename[0] ==
'\0')
122 fd =
Fopen(filename,
"r");
124 if (fd == NULL ||
Ferror(fd)) {
133 fd =
fdLink(fd,
"persist (showProgress)");
134 oldfl=
Fcntl(fd, F_GETFD, 0);
137 Fcntl(fd, F_SETFD, (
void*)oldfl);
148 fd =
fdFree(fd,
"persist (showProgress)");
164 if (isatty (STDOUT_FILENO))
167 fprintf(stdout,
"%-28.28s", s);
168 (void) fflush(stdout);
173 fprintf(stdout,
"%s\n", s);
174 (void) fflush(stdout);
183 fprintf(stdout,
"%%%% %f\n", (
double) (total
184 ? ((((
float) amount) / total) * 100)
186 else if (flags & INSTALL_HASH)
189 (void) fflush(stdout);
196 if (!(flags & INSTALL_LABEL))
198 if (flags & INSTALL_HASH)
199 fprintf(stdout,
"%-28s",
_(
"Preparing..."));
201 fprintf(stdout,
"%s\n",
_(
"Preparing packages for installation..."));
202 (void) fflush(stdout);
206 if (flags & INSTALL_HASH)
216 if (!(flags & INSTALL_LABEL))
218 if (flags & INSTALL_HASH)
219 fprintf(stdout,
"%-28s\n",
_(
"Repackaging..."));
221 fprintf(stdout,
"%s\n",
_(
"Repackaging erased files..."));
222 (void) fflush(stdout);
226 if (amount && (flags & INSTALL_HASH))
233 if (flags & INSTALL_HASH)
237 if (!(flags & INSTALL_LABEL))
239 if (flags & INSTALL_HASH)
240 fprintf(stdout,
"%-28s\n",
_(
"Upgrading..."));
242 fprintf(stdout,
"%s\n",
_(
"Upgrading packages..."));
243 (void) fflush(stdout);
296 struct rpmEIU * eiu = memset(
alloca(
sizeof(*eiu)), 0,
sizeof(*eiu));
300 const char * fileURL = NULL;
302 const char ** av = NULL;
310 if (fileArgv == NULL)
goto exit;
312 ts->goal = TSM_INSTALL;
320 const char *fn =
rpmGetPath(
"%{?_install_file_context_path}", NULL);
321 if (fn != NULL && *fn !=
'\0')
331 time_t ttid = (time_t)ia->
arbtid;
333 ctime(&ttid), ia->
arbtid);
369 for (eiu->
fnp = fileArgv; *eiu->
fnp != NULL; eiu->
fnp++) {
371 av =
_free(av); ac = 0;
381 memcpy(eiu->
argv+eiu->
argc, av, ac *
sizeof(*av));
386 av =
_free(av); ac = 0;
403 for (i = 0; i < eiu->
argc; i++) {
404 fileURL =
_free(fileURL);
405 fileURL = eiu->
argv[i];
409 if (fileURL[0] ==
'=') {
413 if (ts->suggests && ts->nsuggests > 0) {
414 fileURL =
_free(fileURL);
415 fileURL = ts->suggests[0];
416 ts->suggests[0] = NULL;
417 while (ts->nsuggests-- > 0) {
418 if (ts->suggests[ts->nsuggests] == NULL)
420 ts->suggests[ts->nsuggests] =
_free(ts->suggests[ts->nsuggests]);
422 ts->suggests =
_free(ts->suggests);
439 fprintf(stdout,
_(
"Retrieving %s\n"), fileURL);
443 if (!(rootDir && * rootDir))
445 strcpy(tfnbuf,
"rpm-xfer.XXXXXX");
446 (void) mktemp(tfnbuf);
447 tfn =
rpmGenPath(rootDir,
"%{_tmppath}/", tfnbuf);
456 _(
"skipping %s - transfer failed - %s\n"),
477 fileURL =
_free(fileURL);
486 const char * fileName;
496 if (eiu->
fd != NULL) {
511 switch (eiu->
rpmrc) {
555 _(
"package %s is not relocatable\n"), name);
606 _(
"package file %s was skipped\n"), *eiu->
fnp);
610 _(
"file %s requires a newer version of RPM\n"),
625 if (eiu->
fd != NULL) {
673 if (ts->suggests != NULL && ts->nsuggests > 0) {
675 for (i = 0; i < ts->nsuggests; i++) {
676 const char * str = ts->suggests[i];
683 ts->suggests[i] = NULL;
686 ts->suggests =
_free(ts->suggests);
700 if (eiu->
numRPMS && !stopInstall) {
709 rc =
rpmtsRun(ts, NULL, probFilter);
722 if (eiu->
numSRPMS && !stopInstall) {
724 for (i = 0; i < eiu->
numSRPMS; i++) {
730 if (eiu->
fd != NULL) {
749 for (i = 0; i < eiu->
numPkgs; i++) {
750 if (eiu->
pkgURL[i] == NULL)
continue;
770 int stopUninstall = 0;
775 if (argv == NULL)
return 0;
795 time_t ttid = (time_t)ia->
arbtid;
797 ctime(&ttid), ia->
arbtid);
810 ts->goal = TSM_ERASE;
812 for (arg = argv; *arg; arg++) {
841 if (numFailed)
goto exit;
846 numFailed = numPackages;
854 numFailed += numPackages;
862 numFailed += numPackages;
867 if (numPackages > 0 && !stopUninstall) {
872 numPackages =
rpmtsRun(ts, NULL, 0);
876 numFailed += numPackages;
888 const char ** specFilePtr,
const char ** cookie)
894 fd =
Fopen(arg,
"r");
895 if (fd == NULL ||
Ferror(fd)) {
897 if (fd != NULL) (void)
Fclose(fd);
902 fprintf(stdout,
_(
"Installing %s\n"), arg);
914 if (specFilePtr && *specFilePtr)
915 *specFilePtr =
_free(*specFilePtr);
916 if (cookie && *cookie)
917 *cookie =
_free(*cookie);